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");
例如:
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.
(注意:和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");