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; -------- ...
随机推荐
- Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)
我真的是太菜了 A. Perfect Squares time limit per test 1 second memory limit per test 256 megabytes input st ...
- Pandas对多列进行升降序排列
df = pd.DataFrame(rows, columns = ["llx", "lly", "urx", "ury" ...
- Hadoop全分布式模式安装
一.准备 1.准备至少三台linux服务器,并安装JDK 关闭防火墙如下 systemctl stop firewalld.service systemctl disable firewalld.se ...
- 九度oj 题目1363:欢乐斗地主
题目描述: 如果大家玩过欢乐斗地主这个游戏,就一定知道有一个具有“提示”功能的按钮.如果你不知道你现在手里的牌有没有比上家大的牌,并且你也懒得去一张一张地看你手中的牌.这时候你就可以点“提示”按钮,系 ...
- [转]Visual Studio调试之符号文件
http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio调试之断点进阶 ...
- Key-value数据库:Redis缓存服务
Redis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.其提供了多种主流语言的客户端,方便使用:同时Redis支持主 ...
- localStorage的用法
1.在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,前者是一直存在本地的,后者是伴随着session,窗口一旦关闭就消失了.二者用法完全相 ...
- HDU——2064汉诺塔III
汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- centos中简易安装docker
centos中简易安装docker准备环境要求:请确保自己的centos的内核版本大于3.10,使用如下linux命令: uname -r1显示如下类似信息: 3.10.0-862.3.3.el7.x ...
- [解决方案]Window 2008 R2 + IIS7.5 + VS2013 错误代码 0x80070002
HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或暂时不可用.详细错误信息模块 IIS Web Core通知 MapRequest Handler处理程序 Static ...