c# double.ToString()最大数字和尾零的数目

本文关键字:数字 ToString double | 更新日期: 2023-09-27 18:18:52

如何将double转换为具有6个最大数字数的string并删除尾随零?

我想有:

2.123456123 -> "2.123456"
0.0000012 -> "0.000001"   (and not "1.2e-6")
12.45 -> "12.45"   (and not "12.450000")
36 -> "36"   (and not "36.000000")

使用string.Format("{0:F6"}, value)输出尾随零和string.Format("{0:G6"}, value)将不适合第二个例子。

是否可以使用value.ToString("0.######) ?

是否有一个等效的方法来做string.Format() ?

c# double.ToString()最大数字和尾零的数目

可以使用value.ToString("0.######")。但是,您应该考虑另一件事:double不是十进制(以10为基数)。您不应该依赖于数字的十进制表示是合理的-许多以10为基数的普通十进制数字需要以2为基数的无限小数展开。

如果你确实关心十进制表示,它可能使用decimal是一个更好的主意-它也是一个浮点数,但以10为基数。

在这两种情况下,这都涉及到四舍五入——这可能是你想要的,也可能不是你想要的。

tokens是一个具有Price字符串属性的ViewModel:

foreach (var item in tokens)
{
  item.Price = double.Parse(item.Price).ToString("#,0");
}
// 123456 => 123,456