将字符串转换为保留两位小数的浮点数

2 投票
2 回答
19164 浏览
提问于 2025-04-18 01:21

我想把 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

2 个回答

0

只需要用 float("3") 就可以实现这个功能,但要注意,float 这个类型并没有固定的小数位数;这个特性更多是通过字符串格式化来输出 float 的时候才会出现。所以你可以用 '%.2f' % float("3") 来查看你的 float 值,显示为两位小数。

你的测试在几个方面都有问题。

va = '%.2f' % float('3') 创建了一个看起来像浮点数的 str,但其实并不是一个真正的 float

vb = float('%.2f' % float('3')) 创建了一个合适的 float,但是你打印的测试 print vb 并没有把这个 float 格式化为两位小数。它只是用了默认的格式化方式(这会打印出一个后缀 .0,以表明这不是一个 int)。

7

你把浮点数的值和它的字符串表示搞混了。用 float(3) 就可以了,每当你需要打印一个浮点数时,使用格式化就行。

va = float('3')
print format(va, '.2f')
print isinstance(va, float)

float 对象本身并没有跟小数位数相关的概念。

撰写回答