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

Java使用double计算停车罚款时代码输出结果异常问题求助

问题原因

你编写的CalculateFine方法全程使用int类型做数值运算,Java的整数运算会直接截断小数部分,不会保留浮点结果,因此计算出来的滞纳金会丢失小数位,和预期结果不符。
比如当本金为12元时,单日10%滞纳金应为1.2元,但你的代码中10*12/100的运算结果是1,直接丢失了0.2元的部分,逾期天数越多偏差越大。

修复方法

修改计算逻辑,将运算过程升级为浮点型计算即可,修正后的方法代码如下:

public double CalculateFine(int finePrice, int daysLate)
{
    // 用浮点型计算,避免整数截断
    double dailyFee = finePrice * 0.1;
    double totalLateFee = dailyFee * daysLate;
    return totalLateFee;
}

如果要保留你原来的百分比写法,只需要将其中一个操作数改为浮点型即可触发自动类型提升:

// 等效写法,10.0为double类型,整个运算链路会自动升级为double运算
double percentAmount = 10.0 * finePrice / 100;
double amountToCharge = percentAmount * daysLate;
return amountToCharge;

其他注意事项

你当前贴出的类代码中还有其他不匹配的问题,若不是复制粘贴失误建议同步修正:

  • 类名为Fines,但构造方法名写为Database,不符合Java类构造方法命名规则
  • 构造方法中用到的books、name变量未在类中定义,你当前定义的成员变量是fines和test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:05