在java中将int转换为double然后返回到int
快速提问。
这永远都是真的吗?
int i = ...;
double d = i;
if (i == (int) d) ...
或者我需要进行四舍五入才能确定?
if (i == Math.round(d)) ...
quick question.
Would this always be true?
int i = ...;
double d = i;
if (i == (int) d) ...
Or I need to do rounding to be sure?
if (i == Math.round(d)) ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,所有可能的
int
值都可以安全地往返于double
。您可以使用以下代码验证它:
请注意,我没有使用正常的
for
循环,因为它会跳过Integer.MAX_VALUE
或无限循环。请注意,对于
int
/float
或long
/double
来说,情况不成立。 >!Yes, all possible
int
values can round-trip to adouble
safely.You can verify it with this code:
Note that I'm not using a normal
for
loop, because it would either skipInteger.MAX_VALUE
or loop indefinitely.Note that the same is not true for
int
/float
or forlong
/double
!如果您的计算机速度较慢或没有时间运行循环来自行检查,则 Java 语言规范的相关部分位于此处 § 5.1.2 扩大转换:
(以下部分§ 5.1 .3 缩小原始转换 确保返回的方式 double -> 也不会丢失任何信息。)
If you're on a slow computer or don't have time to run the loop to check for yourself, the relevant part of the Java Language Specification is here § 5.1.2 Widening Conversions:
(The following section § 5.1.3 Narrowing Primitive Conversions ensures that the way back, double -> int, doesn't loose any information either.)
约阿希姆解决方案的变体。
查找导致转换为浮点数时出错的最小值。
印刷
A variation on Joachim's solution.
To find the smallest value which causes an error for a conversion to float.
prints