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

如何将C#速度计算程序的结果以小数形式显示?

问题:如何让速度计算结果以小数形式显示?

作业题目

编写一个计算速度的程序:接收距离(单位:meters)和时间(分为三个数值:hours、minutes、seconds),计算速度的三种单位:meters per second、kilometres per hour、miles per hour(提示:1 mile = 1609 meters),并将结果输出至Console。

现有代码

int distanceInMeters, hours, minutes, seconds;
Console.WriteLine("Please type distance in meters: ");
distanceInMeters = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in hours: ");
hours = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in minutes: ");
minutes = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in seconds: ");
seconds = Convert.ToInt32(Console.ReadLine());

int metersSecond, kmH, milesH;

metersSecond = distanceInMeters / ((hours * 3600) + (minutes * 60) + seconds);
kmH = (distanceInMeters / 1000) / (hours + (minutes / 60) + (seconds / 3600));
milesH = (distanceInMeters / 1609) / (hours + (minutes / 60) + (seconds / 3600));

Console.WriteLine("Your speed in meters/seconds is: " + metersSecond);
Console.WriteLine("Please speed in km/h is: " + kmH);
Console.WriteLine("Please speed in miles/h is: " + milesH);

问题原因

当前代码用int(整数类型)存储计算结果,且整数之间的除法会自动截断小数部分,只保留整数,所以输出都是整数。要显示小数,需要改用浮点类型并调整计算逻辑。

修改方案

1. 替换结果变量类型

将存储速度结果的变量从int改为double(双精度浮点类型,适合小数计算):

double metersSecond, kmH, milesH;

2. 触发浮点除法

整数除法会丢失小数,计算时需要将至少一个操作数转为浮点类型(比如在数值后加.0,或用(double)强制转换),确保计算过程保留小数。

3. 优化时间计算(推荐)

先把时间统一转换成总秒数或总小时数,逻辑更清晰,减少出错概率。

修改后的完整代码

int distanceInMeters, hours, minutes, seconds;
Console.WriteLine("Please type distance in meters: ");
distanceInMeters = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in hours: ");
hours = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in minutes: ");
minutes = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please type time in seconds: ");
seconds = Convert.ToInt32(Console.ReadLine());

// 统一计算总秒数和总小时数
double totalSeconds = hours * 3600 + minutes * 60 + seconds;
double totalHours = totalSeconds / 3600;

// 使用double存储浮点结果
double metersSecond, kmH, milesH;

metersSecond = (double)distanceInMeters / totalSeconds;
kmH = (distanceInMeters / 1000.0) / totalHours;
milesH = (distanceInMeters / 1609.0) / totalHours;

// 格式化输出,保留2位小数
Console.WriteLine($"Your speed in meters/seconds is: {metersSecond:F2}");
Console.WriteLine($"Your speed in km/h is: {kmH:F2}");
Console.WriteLine($"Your speed in miles/h is: {milesH:F2}");

额外说明

  • {变量:F2}是格式化语法,可指定保留的小数位数,比如F3表示保留3位小数。
  • 如果需要更高精度,可以改用decimal类型,日常计算用double足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:50:28