当前位置: 首页 > 面试题库 >

从十进制删除尾随零

尉迟俊能
2023-03-14
问题内容

我有一个很长的小数列表,我必须根据某些条件将其调整为10、100、1000,....
1000000。当我将它们相乘时,有时会想要删除一个无用的尾随零(尽管并非总是如此)。例如…

from decimal import Decimal

# outputs 25.0,  PROBLEM!  I would like it to output 25
print Decimal('2.5') * 10

# outputs 2567.8000, PROBLEM!  I would like it to output 2567.8
print Decimal('2.5678') * 1000

是否有一个函数告诉小数对象舍弃这些无关紧要的零?我能想到的唯一方法是将其转换为字符串并使用正则表达式替换它们。

应该提到我正在使用python 2.6.5

EDIT senderle的好答案使我意识到,我偶尔会得到一个像250.0这样的数字,当归一化时会产生2.5E +
2。我猜在这些情况下,我可以尝试将它们整理出来并转换为整数


问题答案:

这样做可能是更好的方法,但是您可以使用它.rstrip('0').rstrip('.')来获得所需的结果。

以您的数字为例:

>>> s = str(Decimal('2.5') * 10)
>>> print s.rstrip('0').rstrip('.') if '.' in s else s
25
>>> s = str(Decimal('2.5678') * 1000)
>>> print s.rstrip('0').rstrip('.') if '.' in s else s
2567.8

这是gerrit在注释中指出的问题的解决方法:

>>> s = str(Decimal('1500'))
>>> print s.rstrip('0').rstrip('.') if '.' in s else s
1500


 类似资料:
  • 问题内容: 我是Java的新手,尝试使用BigDecimal(例如99999999.99)并将其转换为字符串,但没有小数位和尾随数字。另外,我不想在数字中加上逗号,也不需要四舍五入。 我试过了: 但不支持BigDecimal。 有任何想法吗? 非常感谢。 问题答案: 尝试

  • 问题内容: 我正在执行一个显示赔率的程序,但是客户只希望显示有效数字。因此,1.50将显示为“ 1.5”,而1.00将显示为“ 1”。 如何使MySQL不显示尾随零; 即在数据库中: 赔率 1.500 23.030 2.000 4.450 将显示为 1.5 23.03 2 4.45 谢谢你的帮助 问题答案: 用于TRIM功能的文档。

  • 问题内容: 我想删除所有结尾的零而不截断或舍入该数字(如果没有的话)。例如,数字可能类似于,在这种情况下,尾随零应被删除。但是这个数字也可能 几乎是 不合理的,比如在屏幕的边缘。有没有办法设置DecimalFormat或其他类以减少尾随的零,同时保持不合理性不变? 问题答案: 如果您愿意切换到,则可以使用#stripTrailingZeroes()方法来完成此操作。

  • 问题内容: 我有字符串(来自DB),其中可能包含数字值。如果它包含数值,我想删除尾随零,例如: ,仅适用于第一个,而不适用于第二个。 很多答案都指向使用,但是我得到的可能不是数字。因此,我认为更好的解决方案可能是通过Regex。 问题答案: 有可能: 我懒又傻,只是 使用相同的解决方案,而不是某些注释中提到的,以便于理解

  • 问题内容: 我需要找到一种方法来在python中转换以下字符串: 等等。我尝试了.rstrip(‘0’)。rstrip(’。’),但是如果输入为0或00则不起作用。 有任何想法吗?谢谢! 问题答案: 更新了 通用以保持精度并处理看不见的值: 输出:

  • 问题内容: 我正在尝试使用round函数,并且不显示任何尾随零,但最后仍显示一些零。我想得到10.4,但得到这样的东西: 这是我的SQL: 如何在此处删除尾随零?我只需要显示10.4。 问题答案: 您只需要将其强制转换为十进制(12,2)。