C# 从小于 1 的双精度值中删除前导零

C# Remove leading zeros from double values lower than 1

例如:

string value = "0000.025";

我需要 0.025

我试过了

value.TrimStart('0');

但是 returns .025

您必须转换为 double 然后调用 ToString

string val = Double.Parse("0000.025").ToString();

因为 double 你可能对小数部分的 precision 有疑问,最好使用:

string val = Decimal.Parse("0000.025").ToString();

你得到 .025 的原因是因为 TrimStart('0') 将 trim 所有领先的 0 直到它达到除了 0:

0000.025 //zero at start? yes! trim and continue
000.025 //zero at start? yes! trim and continue
00.025 //zero at start? yes! trim and continue
0.025 //zero at start? yes! trim and continue
.025 //zero at start? no! stop

解决此问题的最简单方法之一是将 value 转换为 decimal(归功于 Eric Lippert),然后再转换为 re-print

string value = "0000.025";
string dbrep = Convert.ToDecimal(value).ToString("F3"); //Note, F3 here means you are printing Floating-Point with three numbers after decimal separator.

(注意:和一样,如果我们去"a round trip",最好使用decimal而不是double,因为精度和表示问题 double 数据类型可能有。将分母中没有二次方的 string 转换为 double 并返回 string "is not a round trip",值会稍微改变)

当然,trim 方法会删除所有匹配项...您可以使用

将其添加回来
String.Format("0{0}", value.TrimStart('0'));

如果你将它变成一个简单的双精度数,它会从数字中删除多余的零

 double value = Double.Parse("0000.025");