为什么浮点数据类型在使用大量数字时会给出奇怪的输出

什雷扬什

我试图了解在 spark 中使用 Float 数据类型投射大量数字的行为。

在此处输入图像描述

上图中的最后一个 select 语句给出了非常突然的输出。

提前致谢 !

赫里斯托·伊利耶夫

输出并不突然。它只是对截断浮点表示的限制的演示。FloatTypein Spark 由 Java 的float32位 IEEE754 浮点数支持它有 24 位的有效位,但 MSB 始终是1,因此实际精度只有 23 位。

123456789.6 是 1.8396495223045348... x 2 261.8396495223045348 是 1.110101101111001101000101011001... 二进制。将其限制为仅 24 位会导致 1.11010110111100110100011(最后一位向上舍入),即十进制的 1.8396495580673218。将它乘以 2 26得到 123456792。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中浮点数据类型精度

为什么printf()在python中给出奇怪的输出?

声明浮点数,为什么默认类型为double?

为什么浮点数逃到下一行时会保留“幻像”空间?

为什么十进制不支持浮点数据类型的算术运算?

当没有浮点数据类型时,为什么此代码会得到浮点异常?

为什么在OpenCV中使用浮点数?

使用rdtsc在Intel上进行汇编程序基准测试会给出奇怪的答案,为什么?

为什么在定义浮点数时使用'f'后缀有时会导致GLSL编译器错误?

C ++中浮点数据类型的精度

为什么c ++编译器在对两种不同类型的数字变量使用`std :: max()`函数时会给出错误

为什么Pandas数据框将整数转换为浮点数据类型

在熊猫中将对象数据类型转换为浮点数据类型会导致NaN值

如何对多种数据类型(字符串,整数,浮点数)使用模板?

为什么C程序使用Scanf给出奇怪的输出?

为什么在生成随机浮点数时会收到此错误?

将MySQL十进制数据类型类型转换为C#浮点数据类型

jQuery自动完成不显示浮点数据类型值

为什么min()给出奇怪的结果?

熊猫:为什么数字浮点数的默认列类型是?

选择浮点数据类型值时出现 LINQ 错误

节点在特定浮点数的总和上给出奇怪的输出

为什么这个简单的 lambda 函数会给出奇怪的输出?

为什么 MATLAB 中的日期时间会给出奇怪的结果?

SSE 2 及以上 - 为什么浮点数据类型只存储 2 个浮点数

如何在python数据框中将对象数据类型转换为浮点数

在 C 中以浮点数据类型打印超过 6 个十进制数字时打印的随机数字(GCC 编译器)

Godot着色器中是否有双浮点数据类型?

为什么程序中的 for 循环无法正常工作。它显示正确的输出但给出奇怪的输出