我读过这个 - 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/