float32和float64之间的真正区别

时间:2017-04-16 18:48:56

标签: python numpy types

我希望了解float16float32在结果精度方面的实际差异。例如,Numpy允许您选择所需数据类型的范围(np.float16, np.float32, np.float64)。我担心的是,如果我决定使用float 16来保留内存并避免可能的溢出,那么与float32相比,这会造成最终结果的丢失吗?

谢谢

2 个答案:

答案 0 :(得分:7)

a = np.array([0.123456789121212,2,3], dtype=np.float16)
print("16bit: ", a[0])

a = np.array([0.123456789121212,2,3], dtype=np.float32)
print("32bit: ", a[0])

b = np.array([0.123456789121212121212,2,3], dtype=np.float64)
print("64bit: ", b[0])
  • 16位:0.1235
  • 32位:0.12345679
  • 64位:0.12345678912121212

答案 1 :(得分:3)

float32是32位数字-float64使用64位。

这意味着float64占用的内存是原来的两倍-在某些计算机体系结构中,对其进行操作可能会慢很多。

但是,float64可以比32位浮点数更准确地表示数字。

它们还允许存储更大的数字。

对于您的Python-Numpy项目,我确定您知道输入变量及其性质。

要做出决定,我们作为程序员需要自问

  1. 我的输出需要哪种精度?
  2. 速度根本不是问题吗?
  3. 百万分之几需要什么精度?

如果将我所在城市的天气数据存储为 [12.3、14.5、11.1、9.9、12.2、8.2]

第二天的预测输出可能为11.5或11.5164374

您认为是否需要存储浮点数32或浮点数64?