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

C#使用Math.Round保留2位小数无法输出73.50类格式问题求解

问题原因
  • 你的Math.Round逻辑已经正确完成了数值的两位小数精度舍入,double属于数值存储类型,本身不会保留无意义的末尾后缀0
  • 输出异常的核心原因是:控制台默认将double转为字符串输出时,会自动省略末尾的0,和舍入逻辑无关
解决方案

你只需要在输出时指定字符串格式化规则即可,不需要修改舍入逻辑,有两种常用写法:

  1. 占位符格式化写法
double b1 = double.Parse(Console.ReadLine());
double b2 = double.Parse(Console.ReadLine());
double h = double.Parse(Console.ReadLine());
double area = (b1 + b2) * h / 2;
double area1 = Math.Round(area, 2, MidpointRounding.ToEven);
// 修改输出行,F2表示固定保留2位小数,自动补末尾的0
Console.WriteLine("{0:F2}", area1);
  1. 插值字符串写法(C# 6及以上版本支持,更简洁)
Console.WriteLine($"{area1:F2}");
补充说明

如果你不需要单独存储舍入后的area1变量做后续计算,也可以省略Math.Round步骤,直接对原始计算结果做格式化输出:Console.WriteLine($"{area:F2}");,格式化操作会默认按照MidpointRounding.ToEven规则完成舍入,和你原有逻辑效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:18:01