WHat是格式化python十进制格式的好方法吗?
1.00 - > ‘1’
1.20 - > ‘1.2’
1.23 - > ‘1.23’
1.234 - > ‘1.23’
1.2345 - > ‘1.23’
如果您拥有Python
2.6或更高版本,请使用format
:
'{0:.3g}'.format(num)
对于Python 2.5或更早版本:
'%.3g'%(num)
说明:
{0}
告诉format
打印第一个参数-在这种情况下为num
。
冒号(:)之后的所有内容均指定format_spec
。
.3
将精度设置为3。
g
删除无关紧要的零。请参阅
http://en.wikipedia.org/wiki/Printf#fprintf
例如:
tests=[(1.00, '1'),
(1.2, '1.2'),
(1.23, '1.23'),
(1.234, '1.23'),
(1.2345, '1.23')]
for num, answer in tests:
result = '{0:.3g}'.format(num)
if result != answer:
print('Error: {0} --> {1} != {2}'.format(num, result, answer))
exit()
else:
print('{0} --> {1}'.format(num,result))
产量
1.0 --> 1
1.2 --> 1.2
1.23 --> 1.23
1.234 --> 1.23
1.2345 --> 1.23
使用Python
3.6或更高版本,您可以使用f-strings
:
In [40]: num = 1.234; f'{num:.3g}'
Out[40]: '1.23'
问题内容: 如何使用Python 3.0函数将小数点四舍五入到小数位数? 问题答案: 这是一个典型的有用示例…: 嵌套使用第二个参数,即n的当前值,并将其按指定的方式应用(此处为格式的“精度”部分- 小数点后的位数),然后应用外部结果。当然,你可以硬编码,如果你希望(数字或任何号码),但关键的问题是,你不 具备 对! 更好的…: …而不是阴暗“的说法号”,如0和1以上,你可以选择使用有光泽,论点明
问题内容: 我在Python中有一些实例。我希望格式化它们 因此,请确保始终至少保留两个小数位,甚至可能更多。虽然不存在舍入到小数位的解决方案的短缺,但我找不到找到确保数字下限的整洁方法。 我当前的解决方案是计算: 并选择两者中较长的一个。但是,它似乎有些骇人听闻。 问题答案: 如果您希望避免出现字符串问题: 未经测试的代码,但它 应该可以 工作。 这是这样的: d = 12.345 100倍 1
问题内容: 我要显示: 和: 不管小数点的长度或是否有小数位,我都希望显示一个带有2个小数位的,并且我想以一种有效的方式做到这一点。目的是显示货币值。 例如, 问题答案: 我想你可能正在使用模块中的对象?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……) 如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用: 问:在具有
问题内容: 我如何格式化大于24小时的timedelta以在Python中仅包含小时显示? 我通过以下方式达到目标: 有没有更好的办法? 问题答案: 可能定义继承的类会更加优雅
我有功能: 我需要一个函数,在“number”参数-将接收一个小数,舍入到小数位数(缩放参数),并返回字符串中的结果。有人知道怎么做吗?
问题内容: 我正在打印一个我不知道其值的数字。在大多数情况下,该数字为整数或结尾为0.5。在某些情况下,该数字以.25或.75结尾,而极少数情况下该数字达到千分之一。我该如何具体检测到最后一种情况?现在,我的代码检测到一个整数(0个小数位),精确地为0.5(1个小数位),然后在所有其他情况下恢复为2个小数点,但是当我需要这样做时,我需要将其改为3。 问题答案: A 使用二进制(IEEE 754)表