我有一个问题来自另一个关于浮点数精度的问题。
现在,我知道浮点数不能总是准确地表示,因此它们被存储为可以表示的最接近的浮点数。
我的问题实际上是关于 和 的表示形式的float
差异double
。
这个问题从何而来?
假设我这样做:
System.out.println(.475d+.075d);
那么输出不会是0.55
但是0.549999
(在我的机器上)
但是,当我这样做时:
System.out.println(.475f+.075f);
我得到了正确的答案,即0.55
(对我来说有点意外)
到目前为止,我的印象是double
精度更高(双精度更高,小数位数更长)float
。因此,如果一个 double 不能精确表示,那么它的等效浮点表示也将不准确地存储。
然而,我得到的结果对我来说有点令人不安。如果出现以下情况,我会感到困惑:
- 我对什么
precision
意思有不正确的理解? float
并且double
表示方式不同,除了 double 具有更多位的事实之外?