odoo小数精确度
python round()
函数
Python用于四舍五入的内建函数round() ,它的定义为

意思是,
将 小数部分保留到 ndigits 指定的 小数位,也就是 精度保持到 ndigits -1 位; 如果没有 指定 ndigits ,则 精度 保持到 整数位。
例如

n = 5.11965811966 直接 round 时, 精确度 为整数, 即 5.0 ; round(n, 5)时,小数位保留 5位,即 5.11966
odoo小数位数设置
在 odoo中,各业务模块设置了各自的精确度,
通过
模型 decimal.precision 定义
用于不同用途的
精确度【小数位数】, dp 模型
根据 name 返回
小数位数,
默认为 2位
常用的精确度用途如下

在定义模型的字段时,
通过 Fileds.float() 的属性 digits_compute 设置
小数位数,
例如
price_unit = fields.Float(string='Unit Price', required=True, digits=dp.get_precision('Product Price'))
通过 dp 类的方法 get_precision 读取
名为 product price 的精确度,
在此例,
读取的值
应是 3,
所以
采购单价
为 3位
小数位

税金与精确度
税金可以设置为
含税价,或者
未含税价

odoo 在计算
订单行的
未税金额,含税金额时,
会调用 account.tax 模型的
方法 compute_all() 进行
计算,
计算时
会以
名为 Account 的小数位数设置
作为 round() 方法的小数位数,
在此例
小数位
为 2 ,
当
税金为 17% 含税价 5.99,
返回
{
"taxes": [
{
"account_analytic_collected_id": false,
"account_analytic_paid_id": false,
"account_collected_id": 49,
"account_paid_id": 49,
"amount": 0.87,
"base_code_id": false,
"base_sign": 1.0,
"id": 2,
"name": "\u589e\u503c\u7a0e17%\u8fdb\u9879\u7a0e",
"price_unit": 5.119658119658119,
"ref_base_code_id": false,
"ref_base_sign": 1.0,
"ref_tax_code_id": false,
"ref_tax_sign": 1.0,
"sequence": 1,
"tax_code_id": false,
"tax_sign": 1.0,
"todo": 0
}
],
"total": 5.12,
"total_included": 5.99
}
算式
为 5.99 /1.17 = 5.11965811966
round(5.99/1.17, 2) = 5.12
在 compute_all() 方法中
预置了
个选项 round_globally,

启用
此选项时,
小数位数
增加 5位,
同样对于 5.99 /1.17 的处理,则更精确,
结果为 5.1196581
odoo小数精确度的更多相关文章
- Odoo小数精度及货币精度详解
一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...
- 免费下载获取Odoo中文实施 应用 指南 手册
引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...
- 关于C#时间格式化中的“f”
示例: DateTime.Now.ToString("yyyyMMddHHmmssfff") 上面的示例就是将日期格式化到毫秒级.那么问题来了,格式化到微秒级.纳秒级怎么整?f又是 ...
- bc 命令
bc命令是一种支持任意精度的交互执行的计算器语言.是Linux简单的计算器,能进行进制转换与计算.能转换的进制包括十六进制.十进制.八进制.二进制等.可以使用的运算符号包括(+)加法.(-)减法.(* ...
- BigDecimal的一些用法
在多功能计算器项目中,计算器和单位换算功能都要求要有20位的精确度,并且要支持超大数,因此double类型就完全不够看了(double类型最多支持16位有效数字,且最大值只支持10^308次方),最后 ...
- js前端数据验证JS工具
var regexEnum = { intege : "^-?[1-9]\\d*$", // 整数 intege1 : "^[1-9]\\d*$", // 正整 ...
- (03)odoo模型/记录集/公用操作
-----------------更新时间11:17 2016-09-18 星期日11:00 2016-03-13 星期日09:10 2016-03-03 星期四11:46 2016-02-25 星期 ...
- mysql的时间戳timestamp精确到小数点后六位
1.mysql的时间戳timestamp精确到小数点后六位. 公司业务使用到Greenplun数据库,根据查询的时间戳来不断的将每个时间段之间的数据,进行数据交换,但是今天发现,mysql的时间戳没有 ...
- c/c++ 整数除预算保留小数
两个整数相除会自动省略小数点后的小数位即使下面这种: int a,int b; int a = 4; int b = 3; double d = a/b; d= 1.0000000; -------- ...
随机推荐
- day04_07 while循环01
while循环结构: #while 条件: print("any") print("any") 死循环案例 num = 1 while num<=10 : ...
- Jmeter Cluster
Jmeter 是开源软件,100%纯java应用程序,专门为负载测试和性能测试. Jmeter的特性包括: 1.负载测试和性能测试许多不同的服务器/协议类型: Web - HTTP, HTTPS SO ...
- Tensorflow 自适应学习速率
Tensorflow 自适应学习速率 在模型的初期的时候,往往设置为较大的学习速率比较好,因为距离极值点比较远,较大的学习速率可以快速靠近极值点:而,后期,由于已经靠近极值点,模型快收敛了,此时,采用 ...
- Spring_mvc的搭建以及实现
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring ...
- Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识
1.什么是WebService 学习 WebService 第一步:体系结构.三元素SOAP/WSDL/UDDI 2.什么是Axis2 Axis2是Apache一套崭新的WebService引擎(框架 ...
- 单例/单体模式(Singleton)
单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式. 单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3, ...
- cf524C The Art of Dealing with ATM
ATMs of a well-known bank of a small country are arranged so that they can not give any amount of mo ...
- 洛谷P1469找筷子
题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX ...
- 【CF713C】Sonya and Problem Wihtout a Legend(离散化,DP)
题意:给你一个数列,对于每个数字你都可以++或者−− 然后花费就是你修改后和原数字的差值,然后问你修改成一个严格递增的,最小花费 思路:很久以前做过一道一模一样的 严格递增很难处理,就转化为非严格递增 ...
- How to debug Android Native Application with eclipse
This blog is inspired by this tutorial http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-a ...