我試圖了解在 spark 中使用 Float 資料型別投射大量數字時的行為。

上圖中的最后一個 select 陳述句給出了非常突然的輸出。
提前致謝 !
uj5u.com熱心網友回復:
輸出并不突然。它只是對截斷浮點表示的限制的演示。FloatTypein Spark 由 Java 的float32位 IEEE754 浮點數支持。它有 24 位的有效位,但 MSB 始終是1,因此實際精度只有 23 位。
123456789.6 是 1.8396495223045348... x 2 26。1.8396495223045348 是 1.110101101111001101000101011001... 二進制。將其限制為僅 24 位會導致 1.11010110111100110100011(最后一位向上舍入),即十進制的 1.8396495580673218。將它乘以 2 26得到 123456792。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/483631.html
