Python - 将浮点字符串解析为整数
我想把一个像“0.75”这样的字符串转换成3/4。请问Python有没有内置的函数可以做到这一点。
我知道可以用float("0.75")把它转换成浮点数,得到一个小数值。但我只想要整数,且不想失去精度。
我可以写个函数,把它乘以100,这样就能得到75/100,但我还是不知道怎么进一步简化成3/4。有什么好主意吗?
2 个回答
3
Python有一个叫做fractions的模块。
>>> import fractions
>>> fractions.Fraction('0.75')
Fraction(3, 4)
4
>>> from fractions import Fraction
>>> Fraction(0.75)
Fraction(3, 4)
可以查看这个文档。
有一点需要注意:非二进制分数(也就是那些来自无法准确用二进制表示的浮点数,比如0.9
)可能会产生意想不到的结果,除非你传入这个float
的字符串表示形式:
>>> Fraction(0.9)
Fraction(8106479329266893, 9007199254740992)
>>> Fraction("0.9")
Fraction(9, 10)