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

Syl*_* B. 8 c# string format

如何将a double转换为string6个最大位数并删除尾随零?

我希望有 :

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")
Run Code Online (Sandbox Code Playgroud)

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

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

有没有相同的方法string.Format()呢?

Lua*_*aan 8

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

如果你关心十进制表示,那么使用它可能是一个更好的主意decimal- 它也是一个浮点数,但是在10中.

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