为什么Julia中Int64与Float32比较会出现不符合预期的结果?
问题解答
这是Julia的预期行为,该现象的核心原因是你对Julia单精度浮点数字面量的规则存在误解:
- Julia中
f后缀后的数字是十进制指数值,而非类型标识。1.0f32的实际含义是Float32类型的1.0 × 10^32,同理2.0f32是Float32类型的2.0 × 10^32。如果你需要表示Float32类型的数值1,正确写法是1.0f0或1f0。 - 三次运行结果的逻辑拆解:
2 < 1:整数2与整数1比较,2更大,返回false,符合常识。2.0f32 < 1.0f32:值为2×10³²的单精度浮点数和值为1×10³²的单精度浮点数比较,前者更大,返回false,符合逻辑。2 < 1.0f32:Int64类型整数的最大值约为9×10¹⁸,远小于1×10³²,因此整数2远小于1.0f32,返回true属于正常结果。
如果你实际想测试整数和Float32类型的1的比较结果,运行2 < 1.0f0即可得到你预期的false结果。
内容的提问来源于stack exchange,提问作者awelkie
相关产品推荐
相关产品推荐

