java - 在Java中将int转换为double期间精度会略有变化吗?

标签 java casting precision

我读过这个 - Why Are Floating Point Numbers Inaccurate?

因此,有时 float 的精度可能会因为其表示方式(带有指数和尾数的科学记数法)而改变。

但是如果我将一个整数值转换为double,有没有机会在Java中稍微改变double的精度?

我的意思是,

    int i = 3;
    double d = (double) i;

    System.out.println(d);

我得到的输出 3.0 符合我的预期。

但是,由于Java中 double 的表示风格,是否有可能像3.000001那样改变精度?

最佳答案

int 不能加倍,但你可以 long 加倍(或 int 浮点):

  • 并非所有大于 2^53-1(或小于 -2^53)的 long 都可以用 double 精确表示;
  • 并非所有大于 2^24-1(或小于 -2^24)的整数都可以用 float 精确表示。

这个限制是因为用于表示尾数的位数( double 为 53, float 为 24)。

关于java - 在Java中将int转换为double期间精度会略有变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50716066/

相关文章:

java - Android - 使用 Renderscript 和 Camera2 API 处理相机数据

java - 如何从返回 dataset(<Object> any) 的 Web 服务创建 POJO

c++ - 将对象转换为派生类以访问父类的 protected 成员

php - 将数字字符串转换为浮点型数据

mysql - View 中列的数据类型

java - 有效的 XML 文档必须有根标签

java - 尝试从 <String> 数组列表中删除罗马数字和数字

Go float64 不适用于经纬度

小数点后 19 位及以上的数学精度

floating-point - 32位IEEE单精度计算机数