odoo-005 小数精度-小数位数

odoo 的 Float 类型的字段 和 Monetary 类型字段小数位数显示问题。
说明:本文的截图跟代码都是基于odoo13版本的。仅供参考。

详情:

一、官方提供的小数准确性

位置:技术-设置-数据库结构-小数准确性
官方设置的小数准确性

这里官方预设了一些场景使用的小数位数的情况,修改对应的数字,就可以修改引用这个名称的显示的小数位数。用法如下:

qty = fields.Float('Qty', digits='Product Unit of Measure')

二、货币字段类型Monetary的精度

位置:开票-配置-会计-货币
注意:我选择的这个菜单是官方提供的,用户有多币种权限才能看到的。当然也可以自己根据货币模型的字段自己写视图。
货币的精度设置
修改成3后,明显的效果是,销售/采购/开票中的未税金额,含税金额,合计显示3位小数。可能导致数据不准,96.00变成95.99,类似这样的。
原理说明: 货币字段的小数精度是根据字段属性中设置的curreny_id而定的,就是货币的精度。

三、自定义小数位数

注意:自己在模型中自定义小数位数,这样的话,视图上显示的小数位数不能多余设定的。
won_count = fields.Float(‘Won Count’, digits=(16, 1))

四、视图上定义显示的小数位数

注意:视图上可以显示需要的小数位数。代码如下:

<field name="factor" digits="[10, 4]"/>

五、report 报表设置显示的小数位数

<span t-field="foo" t-options="{'digits': [16, 3]}"/>
<span t-esc="foo" t-options='{"widget": "float", "decimal_precision": "Product Unit of Measure"}'/>

<t t-set="foo" t-value="o.foo"/>
<t t-esc="round(item, 3)"/> 

思考:

显示的小数位数可以明确看到,那么在后台参与计算的又是几位小数精度呢?

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sapphire~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值