加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python小数 – 使用ROUND_HALF_UP舍入到最接近的整数美元(无分钱

发布时间:2020-12-20 11:15:41 所属栏目:Python 来源:网络整理
导读:我正在尝试使用Decimal.quantize()来实现以下目标: – 对于任何金额,表示为默认精度的python小数,我想使用decimal.ROUND_HALF_UP对其进行舍入,以便在舍入后没有分数. 例如,给定1.25,我试图获得1.00(表示没有分数) 鉴于1.49我试图获得1.00 鉴于1.50我试图获
我正在尝试使用Decimal.quantize()来实现以下目标: –

对于任何金额,表示为默认精度的python小数,我想使用decimal.ROUND_HALF_UP对其进行舍入,以便在舍入后没有分数.

例如,给定1.25,我试图获得1.00(表示没有分数)

鉴于1.49我试图获得1.00

鉴于1.50我试图获得2.00

鉴于1.87我试图获得2.00

鉴于2.00我试图获得2.00

所以美分有两个范围 – 0美分到49美分;和50美分到99美分.对于高达49美分的分数,我想要向下舍入,50美分以上,我想要向上舍入.我试图获得两个有效小数位的结果(总是00).

我在这里没有任何负面价值.如何围绕我的美元来获得我想要的金额?还有除量化之外的其他选择吗?

解决方法

我会尝试以下内容:

>>> from decimal import Decimal,ROUND_HALF_UP
>>> x = Decimal('2.47')
>>> x.quantize(Decimal('1'),rounding=ROUND_HALF_UP).quantize(Decimal('0.01'))
Decimal('2.00')

这里的关键部分是第一个调用:x.quantize(十进制(‘1’),舍入= ROUND_HALF_UP)使用给定的舍入模式将x四舍五入到最接近的整数.第一个参数(十进制(‘1’))确定舍入结果的指数,因此如果用例如十进制(‘0.1’)替换它,它将舍入到最接近的十分之一,而如果用十进制替换它(‘1e1’)它将舍入到最接近的10的倍数.

然后第二个量化调用只是将额外的两个小数位放回来,这样你就会得到十进制(‘2.00’)而不是十进制(2).

如果需要,您还可以使用to_integral_value方法代替第一个量化调用:

>>> x.to_integral_value(rounding=ROUND_HALF_UP).quantize(Decimal('0.01'))
Decimal('2.00')

我看不出任何有理由偏爱另一种解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读