Python:将float转换为保留所有小数位的字符串

时间:2019-07-16 20:10:42

标签: python floating-point

我有一个任务要计算小数点后的位数。

我正在使用以下代码:

str(string_name)[::-1].find('.')

但是在将float转换为字符串时,它将删除结尾的零:

my_string = 16.520440
print(str(my_string ))

输出-'16.52044'

预期的输出-'16.520440'

1 个答案:

答案 0 :(得分:4)

由于尾​​随零不是有效数字,因此您无法在给定的范式内执行此操作。浮点数是通过 value 来存储的,而不是通过原始输入的视觉表示来存储的。例如:

my_string_1 =  16.52044
my_string_2 =  16.520440
my_string_3 =  16.5204400
my_string_4 = 016.5204400

所有人都为LHS变量完全赋予 相同的值:它们具有相同的二进制表示形式。根据定义, 开头和结尾的零不会影响此值。无法将原始输入与存储的值区分开。

如果您想要某种效果,则需要使用其他形式的原始值来合并该信息。例如,您可以添加第二个变量,该变量表示有效的小数位数(这与您要实现的结果相反),或者可以使原始输入为字符串,您可以从中获取该信息。