Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将数字格式化为总位数最大的字符串(不考虑十进制分隔符)_Python_Python 3.x - Fatal编程技术网

Python 如何将数字格式化为总位数最大的字符串(不考虑十进制分隔符)

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,

是否有一种简单的方法可以将数字格式化为总位数最大的字符串(无论数字是在十进制分隔符之前还是之后)

注意。我不想回到科学记数法(对于大数字,请在小数点分隔符右侧截断所有数字,但要超过最大位数)。我认为这使字符串更具可读性(例如,在生成的电子邮件/报告中)

例如,对于n_固定数字=6:

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->在问题中修正。我不想“填充”字符串,因为在我看来,这会降低它的可读性