Python 如何将数字格式化为总位数最大的字符串(不考虑十进制分隔符)
是否有一种简单的方法可以将数字格式化为总位数最大的字符串(无论数字是在十进制分隔符之前还是之后) 注意。我不想回到科学记数法(对于大数字,请在小数点分隔符右侧截断所有数字,但要超过最大位数)。我认为这使字符串更具可读性(例如,在生成的电子邮件/报告中) 例如,对于n_固定数字=6:Python 如何将数字格式化为总位数最大的字符串(不考虑十进制分隔符),python,python-3.x,Python,Python 3.x,是否有一种简单的方法可以将数字格式化为总位数最大的字符串(无论数字是在十进制分隔符之前还是之后) 注意。我不想回到科学记数法(对于大数字,请在小数点分隔符右侧截断所有数字,但要超过最大位数)。我认为这使字符串更具可读性(例如,在生成的电子邮件/报告中) 例如,对于n_固定数字=6: 0.00123456789 -> "0.00123" 0.0000000123456789 -> "0.00000" 12345678.9 -> "12,345,679" (on overflow,
0.00123456789 -> "0.00123"
0.0000000123456789 -> "0.00000"
12345678.9 -> "12,345,679" (on overflow, all digits left of decimal point remain)
4.2 -> "4.2" (no trailing zero's)
以下方法可行,但很麻烦:
def str_fmt(num_in, n_fixed_digits=4):
orig_decimals = len(str(num_in).split(".")[1]) if "." in str(num_in) else 0
n_decimals = min(max(n_fixed_digits - len(str(num_in).split(".")[0]), 0), orig_decimals)
return ("{:,." + str(n_decimals) + "f}").format(num_in)
你能解释一下为什么
12345678.9->“12345679”
?“4.2”
没有6位数字吗?@CDJB->我想回到科学记数法上来,也就是说,只在小数点后截断数字point@wjandrea->在问题中修正。我不想“填充”字符串,因为我认为这会降低它的可读性。你能详细解释一下为什么12345678.9->“12345679”
?“4.2”
没有6位吗?@CDJB->我想回到科学记数法上来——也就是说,只在小数点后截断数字point@wjandrea->在问题中修正。我不想“填充”字符串,因为在我看来,这会降低它的可读性