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

Python格式的十进制数,最少的小数位数

闻人和歌
2023-03-14
问题内容

Decimal在Python中有一些实例。我希望格式化它们

Decimal('1')       => '1.00'
Decimal('12.0')    => '12.00'
Decimal('314.1')   => '314.10'
Decimal('314.151') => '314.151'

因此,请确保始终至少保留两个小数位,甚至可能更多。虽然不存在舍入到n小数位的解决方案的短缺,但我找不到找到确保数字下限的整洁方法。

我当前的解决方案是计算:

first  = '{}'.format(d)
second = '{:.2f}'.format(d)

并选择两者中较长的一个。但是,它似乎有些骇人听闻。


问题答案:

如果您希望避免出现字符串问题:

if d*100 - int(d*100):
    print str(d)
else:
    print ".2f" % d

未经测试的代码,但它 应该可以 工作。

这是这样的:

d = 12.345

100倍

1234.5

负整数(1234.5)

1234.5-1234 = 0.5

.5!= 0

这意味着有3个或更多的小数位。

打印str(12.345)

即使您执行12.3405:

1234.05-1234 = .05

.05!= 0

但是如果您有12.3:

1230-1230 = 0

这意味着要用%.2f打印。



 类似资料:
  • 我正在使用DecimalFormats将双打格式化为字符串。然后这个字符串被集成到我的表示层中。 问题:我想保留所有的小数。示例:“12345678.123456789” 格式:#.#- 我可以用##########对于大小数点,但是如果小数点更长呢? 我发现我的小测试程序很有用,想和大家分享。 你能帮我显示所有小数吗? 这导致: 编辑:一位用户提到了一个相关的问题:如何很好地将浮点数格式化为字符

  • 想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我需要一个正则表达式,它将以这样的方式验证十进制数: 小数点之前/之后可以有任意数量的数字 整数的最大长度为50(不包括小数点) 例如,如果小数点前有5位数字,则小数点后最多可以有45位数字。 允许有50位数字,无小数点。 例如,它应该匹配这些数字: 1234567890123456789012345678901234567890

  • 问题内容: 尝试执行数字格式异常时,出现异常 如果我减少十六进制数字中的一位,它将转换但不会转换。为什么以及如何解决这个问题? 问题答案: 这将导致整数溢出,因为整数始终在Java中签名。从该方法的文档中(重点是我的): 如果发生以下任何一种情况,将引发type 异常: 第一个参数为null或长度为零的字符串。 基数小于Character.MIN_RADIX或大于Character.MAX_RAD

  • 问题内容: 当我使用json.net将小数写到json时,我变得很烦人。有时是1 dp,其他时候是2。 显然,我知道将小数输出到具有一定数量的小数(例如this)的字符串的解决方案,但是我猜想如果没有编写自定义的序列化程序,就无法使用json.net进行控制。 我也知道要强制使用 最大 小数位数,这个问题与强制执行最小小数位数有关。 前两个测试表明发生了什么,它保持声明或计算中的原始小数位数。 我

  • 问题内容: 我想格式化最多不超过2个小数位的浮点数列表。但是,我不想尾随零,也不想尾随小数点。 因此,例如=> ,=> ,=> ,=> 。 简单的解决方案是。但是,这看起来很丑陋,而且看起来很脆弱。还有更好的解决方案,也许带有一些神奇的格式标志? 问题答案: 您需要将和剥离分开;这样你永远不会剥夺自然。 或者,使用函数,但这实际上归结为同一件事: 一些测试:

  • 问题内容: WHat是格式化python十进制格式的好方法吗? 1.00 - > ‘1’ 1.20 - > ‘1.2’ 1.23 - > ‘1.23’ 1.234 - > ‘1.23’ 1.2345 - > ‘1.23’ 问题答案: 如果您拥有Python 2.6或更高版本,请使用: 对于Python 2.5或更早版本: 说明: 告诉打印第一个参数-在这种情况下为。 冒号(:)之后的所有内容均指定