鱼C论坛

 找回密码
 立即注册
查看: 406|回复: 2

[已解决]python保留小数位数问题

[复制链接]
发表于 2024-5-9 17:17:48 | 显示全部楼层 |阅读模式
15鱼币
python中如何将数据不舍只入保留两位小数,且小数的末位为5或0,比如37.931变为37.95;37.372变为37.40;403.7823变为403.80;1075.8996变为1075.90
最佳答案
2024-5-9 17:17:49
本帖最后由 jackz007 于 2024-5-11 00:06 编辑
def foo(f) :
    v = f * 100
    d = v % 10
    if d % 5 :
        v = (v // 10) * 10 + 5 if d < 5 else ((v // 10) + 1) * 10
    return v / 100    

while True :
    s = input('请输入一个浮点数:')
    if s :
        print('%.2f\n' % foo(eval(s)))
    else :
        break
        运行实况:
D:\[exercise]\Python>python x.py
请输入一个浮点数:37.931
37.95

请输入一个浮点数:37.372
37.40

请输入一个浮点数:403.7823
403.80

请输入一个浮点数:1075.8996
1075.90

请输入一个浮点数:

D:\[exercise]\Python>

最佳答案

查看完整内容

运行实况:

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-9 17:17:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-5-11 00:06 编辑
def foo(f) :
    v = f * 100
    d = v % 10
    if d % 5 :
        v = (v // 10) * 10 + 5 if d < 5 else ((v // 10) + 1) * 10
    return v / 100    

while True :
    s = input('请输入一个浮点数:')
    if s :
        print('%.2f\n' % foo(eval(s)))
    else :
        break
        运行实况:
D:\[exercise]\Python>python x.py
请输入一个浮点数:37.931
37.95

请输入一个浮点数:37.372
37.40

请输入一个浮点数:403.7823
403.80

请输入一个浮点数:1075.8996
1075.90

请输入一个浮点数:

D:\[exercise]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-9 17:18:10 | 显示全部楼层
在Python中,可以使用内置的round函数来实现数字的四舍五入,并且可以通过格式化字符串来控制小数位数。

下面是一个示例代码:
def round_number(num):
    # 先将数字保留两位小数并四舍五入
    rounded_num = round(num, 2)
    
    # 将保留两位小数后的数字转为字符串
    num_str = str(rounded_num)
    
    # 如果小数部分为空,直接返回
    if '.' not in num_str:
        return num_str
    
    # 获取小数部分的末尾数字
    decimal_part = num_str.split('.')[1]
    last_digit = int(decimal_part[-1])
    
    # 判断末尾数字是否为5或0,如果是则直接返回保留两位小数后的数字
    if last_digit == 5 or last_digit == 0:
        return num_str
    
    # 如果末尾数字大于5,则向上进位
    if last_digit > 5:
        rounded_num += 0.05
    
    # 如果末尾数字小于5,则向下取整
    if last_digit < 5:
        rounded_num -= 0.05
    
    # 再次保留两位小数并四舍五入
    rounded_num = round(rounded_num, 2)
    
    return str(rounded_num)

使用示例:
print(round_number(37.931))   # 输出:37.95
print(round_number(37.372))   # 输出:37.40
print(round_number(403.7823)) # 输出:403.80
print(round_number(1075.8996))# 输出:1075.90

希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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