|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
同样是用Fraction函数,为什么下面第一段代码两种写法运行后的值是相同的,而第二段代码运行后的值就不同呢,两端代码只是数字不同而已啊。
第一段代码
>>> from fractions import Fraction
>>> print(Fraction(10, 8))
5/4
>>> print(Fraction(10/8))
5/4
第二段代码
>>> print(Fraction(1708227363155544, 4636617128565048))
7/19
>>> print(Fraction(1708227363155544/4636617128565048))
6636883661388099/18014398509481984
>>>
本帖最后由 isdkz 于 2023-2-13 22:04 编辑
因为传2个参数的时候它会直接帮你化简,而你传运算的结果就会帮你把小数转回分数
因为 10 除以 8 是可以除得尽的,所以没有精度丢失,
而 1708227363155544 除以 4636617128565048 是除不尽的,肯定会有精度丢失,
直接化简跟精度丢失后再转回分数的结果肯定不一样了
比如 30 除以 9 也是除不尽的,所以它会得到这样的结果:
>>> from fractions import Fraction
>>> print(Fraction(30, 9))
10/3
>>> print(Fraction(30/9))
7505999378950827/2251799813685248
>>>
|
|