我有一个任务要计算小数点后的位数。
我正在使用以下代码:
str(string_name)[::-1].find('.')
但是在将float转换为字符串时,它将删除结尾的零:
my_string = 16.520440
print(str(my_string ))
输出-'16.52044'
预期的输出-'16.520440'
答案 0 :(得分:4)
由于尾随零不是有效数字,因此您无法在给定的范式内执行此操作。浮点数是通过 value 来存储的,而不是通过原始输入的视觉表示来存储的。例如:
my_string_1 = 16.52044
my_string_2 = 16.520440
my_string_3 = 16.5204400
my_string_4 = 016.5204400
所有人都为LHS变量完全赋予 相同的值:它们具有相同的二进制表示形式。根据定义, 开头和结尾的零不会影响此值。无法将原始输入与存储的值区分开。
如果您想要某种效果,则需要使用其他形式的原始值来合并该信息。例如,您可以添加第二个变量,该变量表示有效的小数位数(这与您要实现的结果相反),或者可以使原始输入为字符串,您可以从中获取该信息。