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

Android小数计算结果异常:道路可停放卡车数量计算值与预期不符

问题根因

这是Java整数运算规则导致的:

  • 代码中road1为int类型,参与运算的10、20均为整型字面量,因此(road1 - 10) / 20全程执行整数除法,运算结果会直接截断小数部分,130除以20得到的整数结果为6。
  • 后续将整数6赋值给double类型的trucks变量时,仅会做整型到浮点型的类型转换,得到6.0,不会还原被截断的小数部分。
修复方案

只要让运算触发浮点除法即可,常见实现方式如下:

  • 方案1:将除数改为浮点型字面量
trucks = (road1 - 10) / 20.0;
  • 方案2:对被除数做强制浮点类型转换
trucks = (double) (road1 - 10) / 20;
  • 方案3(更易维护):提前定义业务相关的浮点常量
// 预留道路长度,单位:米
final double RESERVED_ROAD_LENGTH = 10.0;
// 单台卡车所需车位长度,单位:米
final double PER_TRUCK_SPACE_LENGTH = 20.0;
trucks = (road1 - RESERVED_ROAD_LENGTH) / PER_TRUCK_SPACE_LENGTH;

补充业务优化建议:实际场景中卡车无法拆分停放,可根据需求选择Math.floor()(向下取整得到实际可停整车数)、Math.round()(四舍五入)等方法对结果做取整处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:02