当前位置: 首页 > 知识库问答 >
问题:

在Python中舍入一个数字,但保留结尾的零

赵智
2023-03-14

我一直在编写一个脚本,该脚本从Excel电子表格中获取数据,对数字进行四舍五入,并删除小数点,例如,2606.89579999999变成26069。但是,我需要将数字四舍五入到小数点后两位,即使后面有零,所以2606.89579999999应该变成260690。

我现在有了它,所以我从Excel中的单元格中获取数据,并将其舍入到两位小数(I=round(I,2)),这在上面的示例中给出了一个小数点。

我试图弄清楚如何让它与Decimal一起工作,但我似乎无法让它工作。

如果四舍五入的值不以“0”结尾,则所有其他得到四舍五入的数字都可以使用(i,2)四舍五入,但如果这些数字恰好以*结尾。x0,这个0掉下来,弄乱了数据。

共有3个答案

邵博远
2023-03-14
>>> '{:.2f}'.format(2606.89579999999).replace('.', '')
'260690'
龚苏燕
2023-03-14

从Python 3.6开始,还可以使用f字符串内联格式化数字。在这种情况下,所需的格式是带2位小数的浮点格式,因此您可以使用。2f作为格式说明符:

x = 2606.89579999999
x = round(x, 2)      # not strictly necessary as format will round for you
print(f'{x:.2f}')

输出:

2606.90

申炳
2023-03-14

在讨论尾随零时,这是一个关于表示为字符串的问题,您可以使用

>>> "%.2f" % round(2606.89579999999, 2)
'2606.90'

或使用现代风格,具有格式功能:

>>> '{:.2f}'.format(round(2606.89579999999, 2))
'2606.90'

并用replace或translate删除点(参见python控制台中先前命令的结果):

>>> _.translate(None, '.')
'260690'

注意,此处不需要舍入,因为。2f格式适用相同的舍入:

>>> "%.2f" % 2606.89579999999
'2606.90'

但正如您提到的excel,您可能会选择滚动自己的舍入函数,或使用十进制,如浮点。由于浮点表示,舍入可能导致奇怪的结果:

>>> round(2.675, 2)
2.67
>>> round(2606.89579999999, 2)
2606.89

使用十进制量化:

>>> from decimal import *
>>> x = Decimal('2606.8950000000001')
# Decimal('2606.8950000000001')
>>> '{}'.format(x.quantize(Decimal('.01'), rounding=ROUND_HALF_EVEN))
'2606.90'

对于您的原始任务,这将成为:

>>> x = Decimal('2606.8950000000001')
>>> int((x*100).quantize(1, rounding=ROUND_HALF_EVEN))
260690

奇怪的舍入原因出现在小数点前面:

>>> x = Decimal(2606.8950000000001)
# Decimal('2606.89499999999998181010596454143524169921875') # internal float repr
 类似资料:
  • 问题内容: 我一直在研究一个脚本,该脚本从Excel电子表格中获取数据,四舍五入并删除小数点,例如2606.89579999999变为26069。但是,即使有可能将数字四舍五入到两位小数尾随零,所以2606.89579999999应该变成260690。 我目前拥有它,因此可以从Excel中的单元格中获取数据,并将其四舍五入到小数点后两位(),这在上述示例中为我提供了一个小数点。 我试图弄清楚如何使

  • 问题内容: 这个问题使我丧命。如何在Python中向上舍入一个数字? 我试过了舍入(数字),但它四舍五入数字。例: 我尝试了int(number + .5),但是它再次将数字取整!例: 然后我尝试了round(number + .5),但是在边缘情况下不起作用。例: 请指教。 问题答案: 该小区(上限)功能:

  • 本文向大家介绍JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去,包括了JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去的使用技巧和注意事项,需要的朋友参考一下 前端开发中经常会碰到用 JavaScript?格式化数字,最最常见的是格式化金额,一般格式化金额需要千分位分隔,保留2位小数等等。 简单的功能函数 类似的代码网上有很多: 或者 更加完善的功能函数

  • 我想把一个数字四舍五入到小数点后2位,但也保留后面的2个零,例如425.1382到425.1400,我在下面的例子中尝试过,但它似乎不起作用 或

  • 有没有一个内置的函数可以像下面这样圆?

  • 问题内容: 如何将两个除数的结果取整,例如 和我一样 $ testOne应当将其舍入为“ 2”作为3/2 = 1.5的答案时包含“ 1” 问题答案: 要进行舍入运算,只需将其加到分子上即可。 例子,四舍五入: 例子,四舍五入: 要四舍五入,将其加到分子(一半将四舍五入):