如何打印最多 n 个十进制值的十进制数,如果最后忽略 0?

Posted

技术标签:

【中文标题】如何打印最多 n 个十进制值的十进制数,如果最后忽略 0?【英文标题】:How to print a decimal number up to n decimal values neglecting 0's if any at the end? 【发布时间】:2019-07-07 04:54:25 【问题描述】:

我正在尝试打印两个数字的值,最多 4 位小数,不包括最后的 0。

a= 0.125
b= 0.256325

print("%.4f" %round(a,4))
print("%.4f" %round(b,4))

这给了我 0.1250 和 0.2563,但我只想要 a 的 0.125 和 b 的 0.2563

我希望:

如果 a 是 0.125、0.1250 或 0.125000,我应该只得到 0.125 作为输出,对于所有其他情况,我可以在 "." 之后得到 4 个非零值

【问题讨论】:

str(round(a, 4)) 使用 Python 3.7.3 的结果为 '0.125'(str(round(b, 4)) 的结果为 '0.2563')。 C语言能不能得到想要的结果。 【参考方案1】:

尝试normalize 提到的here

import decimal 
print(decimal.Decimal('0.1230000').normalize())
0.123

你的例子

a= 0.125
b= 0.256325

print (decimal.Decimal(str.format('%.4f' %a)).normalize())
print (decimal.Decimal(str.format('%.4f' %b)).normalize())

0.125
0.2563

【讨论】:

以上是关于如何打印最多 n 个十进制值的十进制数,如果最后忽略 0?的主要内容,如果未能解决你的问题,请参考以下文章

QSerialPort::write() - 只有签名值? (最多 127 个十进制数)?我需要发送 0xFF (255 dec)

如果已经定义了宏_OPENMP,它是一个int类型的十进制数。编写一个程序打印它的值,这个值的意义是啥?

十进制数的正则表达式(最多 3 个带逗号的十进制数)

剑指offer:打印从1到最大的n位数

打印十进制数n 递归

二进制计数器的模值是啥意思?呀