吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 421|回复: 10
收起左侧

[经验求助] (急急急)python中如何用decimal模块实现四舍五入的功能???

[复制链接]
yztengda 发表于 2024-2-27 17:38
40吾爱币
本帖最后由 yztengda 于 2024-2-27 18:30 编辑

(急急急)快速采纳,python中如何用decimal模块实现四舍五入的功能???最好按照我的这的几行代码,写成四舍五入取整数的代码。因为decimal的几种模式我不太懂,(本人自学玩的,非科班)非常感谢了
使用round函数存在问题,例如输出下面的a值,print(a)的值是22,我希望的是22.5四舍五入后应该为23



import math
import decimal


a=22.5
print("a四舍五入后的值为",round(a))


b=6.542
print("b四舍五入后的值为",round(b,2))


最佳答案

查看完整内容

首先把想要四舍五入的数值转换成Decimal对象,然后调用quantize()方法进行四舍五入。Decimal('1')表示四舍五入到整数位,ROUND_HALF_UP规则表示当小数点后第一位数字等于5时向上舍入

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

鸠山一茶 发表于 2024-2-27 17:38
[Python] 纯文本查看 复制代码
from decimal import Decimal, ROUND_HALF_UP

a = Decimal('24.46')

rounded_a = a.quantize(Decimal('1'), rounding=ROUND_HALF_UP)

print(rounded_a)

首先把想要四舍五入的数值转换成Decimal对象,然后调用quantize()方法进行四舍五入。Decimal('1')表示四舍五入到整数位,ROUND_HALF_UP规则表示当小数点后第一位数字等于5时向上舍入

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yztengda + 1 + 1 谢谢@Thanks!

查看全部评分

xiong779 发表于 2024-2-27 17:42
import math
import decimal

a=22.5
print("a四舍五入后的值为",round(a))
print("b四舍五入后的值为",math.ceil(a))

b=6.542
print("b四舍五入后的值为",round(b,2))
print("b四舍五入后的值为",math.ceil(b))
 楼主| yztengda 发表于 2024-2-27 17:45
xiong779 发表于 2024-2-27 17:42
import math
import decimal

首先感谢你的回复。math.ceil是向上取整,对于例如22.4  22.1也会向上取整为23,并不是真正意义上的四舍五入
xiong779 发表于 2024-2-27 17:47
https://dev.to/codemee/python-de-round-yu-decimal-mo-zu-269a
客製類別的捨入法 ?
鸠山一茶 发表于 2024-2-27 19:33
补充更详细一些
[Python] 纯文本查看 复制代码
import decimal

# 设置decimal的舍入模式为ROUND_HALF_UP
decimal.getcontext().rounding = decimal.ROUND_HALF_UP

a = decimal.Decimal('22.5')
# 四舍五入到整数
a_rounded = a.to_integral_value()
print("a四舍五入后的值为", a_rounded)

b = decimal.Decimal('6.542')
# 四舍五入到小数点后两位
b_rounded = b.quantize(decimal.Decimal('0.00'))
print("b四舍五入后的值为", b_rounded)


直接在创建Decimal对象时使用字符串,而不是直接传递浮点数,是因为直接从浮点数转换可能会引入浮点数本身的精度问题。使用字符串或整数来初始化Decimal对象可以避免这个问题。
 楼主| yztengda 发表于 2024-2-27 21:40
鸠山一茶 发表于 2024-2-27 19:33
补充更详细一些
[mw_shl_code=python,true]import decimal

  兄弟,因为我自学非科班,decimal的几种舍入规则分别怎么解释,就像你第一条回复里的那个:       “ROUND_HALF_UP规则表示当小数点后第一位数字等于5时向上舍入”   这个通俗易懂,请教一下,其他几种规则怎么理解,谢谢你!
鸠山一茶 发表于 2024-2-28 11:43
我等会单开个帖子把这个讲明白
鸠山一茶 发表于 2024-2-28 12:52
https://www.52pojie.cn/thread-1894442-1-1.html 把decimal的舍入模式都写明白
鸠山一茶 发表于 2024-2-28 12:56
也可以围观我的github仓库哦https://github.com/Hellohistory/Python-Study_CH
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 15:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表