【C#】如果有一个数值如 168.0000100,如何去除末尾的无效零,只显示有效的小数位数
|
freeflydom
2026年2月9日 14:42
本文热度 133
|
前言
有次刚入行的一位朋友咨询我,能不能把多余的小数点去掉,想了两秒,答案肯定是可以的。
实例
在 C# 中,如果你有一个数值如 90.0000100,想要去除末尾的无效零,只显示有效的小数位数(即 90.00001),可以使用以下方法:
方法 1:使用 ToString() + 格式字符串 "G"(通用格式)
"G"(General)格式会自动去除不必要的零:
double value = 90.0000100;
string formatted = value.ToString("G");
Console.WriteLine(formatted);

注意:"G" 默认最多保留 15 位有效数字,适用于大多数情况。
方法 2:使用 ToString() + "0.########..."(自定义格式)
如果 "G" 格式不符合预期,可以手动指定最多保留的小数位数:
double value = 90.0000100;
string formatted = value.ToString("0.########");
Console.WriteLine(formatted);

# 表示可选数字位,如果后面是零则省略。
方法 3:使用 TrimEnd('0') 处理字符串
如果数值已经是字符串形式,可以直接移除末尾的零:
string valueStr = "90.0000100";
string trimmed = valueStr.TrimEnd('0');
if (trimmed.EndsWith(".")) trimmed = trimmed.TrimEnd('.');
Console.WriteLine(trimmed);

方法 4:使用 decimal 类型(更高精度)
如果涉及财务计算,建议使用 decimal 类型,再结合 ToString("G"):
decimal value = 90.0000100m;
string formatted = value.ToString("G");
Console.WriteLine(formatted);

这种方法貌似不行。
总结
| 方法 | 适用场景 | 示例 |
|---|
ToString("G") | 自动去除无效零 | 90.0000100 → "90.00001" |
ToString("0.########") | 自定义小数位数 | 90.0000100 → "90.00001" |
TrimEnd('0') | 字符串处理 | "90.0000100" → "90.00001" |
decimal + "G" | 高精度计算 | 90.0000100m → "90.00001" |
选择最适合你的方式即可!
转自https://blog.csdn.net/lmy_520/article/details/148895662
该文章在 2026/2/9 14:43:10 编辑过