poi 默认2位小数_odoo小数精确度
python round() 函數(shù)
Python用于四舍五入的內(nèi)建函數(shù)round() ,它的定義為
意思是, 將 小數(shù)部分保留到 ndigits 指定的 小數(shù)位,也就是 精度保持到 ndigits -1 位; 如果沒有 指定 ndigits ,則 精度 保持到 整數(shù)位。
例如
n = 5.11965811966 直接 round 時, 精確度 為整數(shù), 即 5.0 ; round(n, 5)時,小數(shù)位保留 5位,即 5.11966
odoo小數(shù)位數(shù)設(shè)置
在 odoo中,各業(yè)務(wù)模塊設(shè)置了各自的精確度, 通過 模型 decimal.precision 定義 用于不同用途的 精確度【小數(shù)位數(shù)】, dp 模型 根據(jù) name 返回 小數(shù)位數(shù), 默認(rèn)為 2位
常用的精確度用途如下
在定義模型的字段時, 通過 Fileds.float() 的屬性 digits_compute 設(shè)置 小數(shù)位數(shù), 例如
price_unit = fields.Float(string='Unit Price', required=True, digits=dp.get_precision('Product Price'))
通過 dp 類的方法 get_precision 讀取 名為 product price 的精確度, 在此例, 讀取的值 應(yīng)是 3, 所以 采購單價 為 3位 小數(shù)位
稅金與精確度
稅金可以設(shè)置為 含稅價,或者 未含稅價
odoo 在計(jì)算 訂單行的 未稅金額,含稅金額時, 會調(diào)用 account.tax 模型的 方法 compute_all() 進(jìn)行 計(jì)算, 計(jì)算時 會以 名為 Account 的小數(shù)位數(shù)設(shè)置 作為 round() 方法的小數(shù)位數(shù), 在此例 小數(shù)位 為 2 , 當(dāng) 稅金為 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": "增值稅17%進(jìn)項(xiàng)稅",
"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() 方法中 預(yù)置了 個選項(xiàng) round_globally,
啟用 此選項(xiàng)時, 小數(shù)位數(shù) 增加 5位, 同樣對于 5.99 /1.17 的處理,則更精確, 結(jié)果為 5.1196581
轉(zhuǎn)載注明原作者 /by Jeffery
總結(jié)
以上是生活随笔為你收集整理的poi 默认2位小数_odoo小数精确度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: geth 以太坊钱包_以太坊Geth节点
- 下一篇: h5调微信支付 unkonw url_聚