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