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

开发距离转时间工具时,如何消除分数误差以获取正确时分秒?

问题:距离速度转时间工具的分钟计算错误

我正在开发一款“Distance & Speed to Time”工具,但分数问题导致分钟部分计算出错,小时部分的分数值没有被正确转换为分钟。比如输入距离130km、速度40km/hr时,期望结果是:

3 Hour(s) 15 Minute(s) 0 Second(s)
但实际得到:
3 Hour(s) 0 Minute(s) 0 Second(s)

错误代码

float Bx = 130;
float By = 40;
int x = (int) Bx;
int y = (int) By;
var KeepSecond = (x / y * 3600) ;
var HourX = KeepSecond/3600;

int Hour = (int) HourX;
var MinuteX = (KeepSecond-(Hour*3600))/60;
int Minute = (int) MinuteX;
var SecondX = (KeepSecond-(Hour*3600)-(Minute*60));
int Second = (int) SecondX;
String result = String.format(Hour+" Hour(s) "+Minute+" Minute(s) "+Second+" Second(s) ");
Answer.setText(result);

问题原因及修复

问题核心是整数除法丢失了小数精度:你把浮点类型的Bx和By强制转成int后,x/y会执行整数除法,130/40得到的是3而非精确的3.25,后续计算自然丢失了0.25小时对应的15分钟。

修复后的代码:

float distance = 130;
float speed = 40;
// 直接用浮点运算计算总秒数,保留完整时间精度
double totalSeconds = (distance / speed) * 3600;

int hour = (int) (totalSeconds / 3600);
double remainingAfterHour = totalSeconds - hour * 3600;
int minute = (int) (remainingAfterHour / 60);
int second = (int) (remainingAfterHour - minute * 60);

String result = String.format("%d Hour(s) %d Minute(s) %d Second(s)", hour, minute, second);
Answer.setText(result);

修复说明

  1. 保留浮点类型的距离和速度,直接计算得到精确的小时数(3.25),再转换为总秒数11700
  2. 通过总秒数拆分出小时后,用剩余秒数计算分钟和秒,完整保留了小数部分的时间值
  3. 使用String.format的占位符语法,让代码更简洁规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:03:30