C#double.ToString()最大位数和尾随零

时间:2015-10-22 11:53:06

标签: c# string format

如何将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()等效的方法?

2 个答案:

答案 0 :(得分:8)

可以使用value.ToString("0.######")。但是,您应该考虑另一件事:double不是小数(基数为10)。你不应该依赖数字的十进制表示是合理的 - 大量正常的十进制基数10在基数2中需要无限的十进制扩展。

如果您确实关心十进制表示,那么可能更好地使用decimal - 它也是一个浮点数,但在基数10中。

在任何一种情况下,这都涉及四舍五入 - 可能是也可能不是你想要的。

答案 1 :(得分:0)

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

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

// 123456 => 123,456