Python 将字符串转换为小数点后两位的浮点
我正在尝试将Python 将字符串转换为小数点后两位的浮点,python,floating-point,Python,Floating Point,我正在尝试将str'3'转换为float 3.00 va = '%.2f' % float('3') print va print isinstance(va, float) 3.00 False --- vb = float('%.2f' % float('3')) print vb print isinstance(vb, float) 3.0 True 我需要输出的代码 3.00 # correct decimal places True # is float 您将浮点值与
str'3'
转换为float 3.00
va = '%.2f' % float('3')
print va
print isinstance(va, float)
3.00
False
---
vb = float('%.2f' % float('3'))
print vb
print isinstance(vb, float)
3.0
True
我需要输出的代码
3.00 # correct decimal places
True # is float
您将浮点值与其字符串表示形式混淆
float(3)
就足够了,无论何时需要打印,都要使用格式
va = float('3')
print format(va, '.2f')
print isinstance(va, float)
float
对象本身没有要跟踪的小数位数的概念。只需使用float(“3”)
即可实现这一点,但请注意float
在小数点后没有特定的位数;这更像是使用字符串格式输出float
的一个特性。因此,您可以使用'%.2f'%float(“3”)
查看带有两个十进制数字的浮点值
你的测试在几个方面都有缺陷
va='%.2f'%float('3')
创建了一个str
,看起来像一个float,而不是float
vb=float('%.2f'%float('3'))
创建了一个合适的float
,但是您的打印测试print vb
没有将float
格式化为在点后使用两个十进制数字。它只是使用了默认格式(打印一个尾随的.0
,以明确这不是一个int
)。我从字符串“3”开始,而不是数字3。@onepiece:这与答案没有区别。实际上我明白你的意思float()
表示float
,format()
表示string
。用于不同的目的。所以基本上对于字符串'3'
,我只能将'3.00'
显示为字符串?如果要显示某个内容,它必须始终是字符串(除非我们讨论图形)。浮点的内部表示形式与3.0
的内部表示形式大不相同,因此前面有3
的任何东西都是一个字符串,要显示它,首先必须将浮点
转换成这样的字符串。仅当使用print vb
时,才会隐式执行此操作(使用格式的默认参数)。