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; -------- ...
随机推荐
- sql server 学习分享
http://www.cnblogs.com/liu-chao-feng/p/6144872.html
- 【mysql 优化 1】优化概述
原文地址:Optimization Overview 数据库性能取决于几个数据库层面的因素,比如:表设计,查询语句,配置. 这些软件结构导致你必须在CPU和I/O 操作的硬件层面做到尽可能的最小化和高 ...
- javascript基础1 语法 点击事件 超链接带点击事件
javascript ----------------------------------------------------------------------------------------- ...
- Golang遇到的问题记录
1,windows cmd 结束输入问题 func main() { counts := make(map[string]int) countLines(os.Stdin, counts) fmt.P ...
- java8新特性lamda表达式在集合中的使用
1.利用stream().forEach()循环处理List; List<String> list = Lists.newArrayList();//新建一个List 用的google提供 ...
- Sum BZOJ 3944
Sum [问题描述] 给定一个正整数 N ( N <= 231 - 1 ) 求: [输入格式] 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询 ...
- linux内核之进程的基本概念(进程,进程组,会话关系)
进程是操作系统的一个核心概念.每个进程都有自己唯一的标识:进程ID,也有自己的生命周期.一个典型的进程的生命周期如图4-1所示. 进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家 ...
- ajax 将整个表单提交到后台处理
$(document).on('click', '.user-save-btn', function () { $.ajax({ url: 'index', type: 'post', dataTyp ...
- HRBUST 2064:萌萌哒十五酱的宠物~(最近公共祖先LCA)
题意:一个n个点的树,询问某两点之间的简单路径,问路径上任选三边能否组成一个三角形. N<100000,权值<109 思路: 这里最神奇的思路过于以下这个: n个数,任意三个都不能组成三角 ...
- spring boot--日志、开发和生产环境切换、自定义配置(环境变量)
Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug ...