You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何将double类型转换为int类型结果为0而非1?

为什么强制转换后int变量a的值是0而非1?

这事儿其实核心有两点:浮点数的实际大小,加上Java强制类型转换的规则,咱们一步步说清楚:

  • 先拆解你的double值到底是多大:你写的1.3901863961920014E-5是科学计数法,转成普通小数是0.000013901863961920014——这个数明显大于0但远小于1,整数部分本来就是0。
  • Java中double转int的规则是「直接截断小数部分」:当你用(int)s做强制转换时,Java会直接砍掉所有小数位,只保留整数部分,完全不会做四舍五入。哪怕你的小数部分是0.999999,只要整数部分是0,转成int后结果就是0。

给你举个更直观的对比例子:

double s1 = 0.999999;
int a1 = (int)s1; // a1的值是0
double s2 = 1.000001;
int a2 = (int)s2; // a2的值是1

所以回到你的代码里,那个double值本身就不到1,截断后自然就是0啦。

内容的提问来源于stack exchange,提问作者user9349457

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:32:51