c# 浮点输出精度问题
查看原帖
c# 浮点输出精度问题
327499
Mesmer楼主2023/3/1 20:02

这个不是题解,没有解题过程

第一、第二例错误,其它例没错,最后发现是输出精度问题

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0 0,不要输出后缀 0 0。

以下做法并不符合题意,但这道题的核心难度并不是实现一个数字修约的函数...和自己和解吧,差不多算了

  1. 数学库
// System.Math.Round (double value, int digits)
Math.Round(1.2345678d, 6)

科学上是4舍6入5凑偶。很遗憾,c#的处理小数的方法都是科学的,没找到四舍五入的。

  1. 格式化字符串
string aa1 = 1.23456789d.ToString("R");
string aa2 = 1.23456789d.ToString("f6");
string aa3 = 1.23456789d.ToString("g6");
string aa4 = 1.23456789d.ToString("0.000000");
1.23456789, 1.234568, 1.23457, 1.234568

这道题...g6过了

  1. 邪道做法
double value = 1.23456789d;
long p = value * 10000000;
// 根据p拼接字符串

因为BMI大于24才要输出值,小数点前必定两位值

value.ToString("0.0000");

我看到有人这样过了,我自己没试

2023/3/1 20:02
加载中...