【发布时间】:2016-04-21 03:21:01
【问题描述】:
假设我有
int i=25;
double j=(double)i;
j 是否有可能具有 24.9999999..upto_allowed 或 25.00000000..._upto_allowed_minus_one_and_then_1 的值。我记得在某个地方读过这样的东西,但无法正确回忆。
换句话说:
是否存在整数在转换为 double 时会丢失精度的情况?
【问题讨论】:
-
请把你的问题解释得更容易理解。
-
视情况而定。大多数计算机使用IEEE 754 浮点数,其中精确表示-2⁵³ 和2⁵³ 之间的整数。在 ILP32 和 LP64 架构(大多数 32 位和 64 位架构是)上,
int是 32 位的,这意味着double类型可以准确地表示所有int值。 -
@AdalarasanSachithanantham :抱歉有点乱。查看编辑。