5

我想将一个double值解析为string. 我希望我的号码具有指定的位数(直到运行时我才知道)。如果这个数字可以用位数的非零值表示,这就是我想要的。如果这个数字是这样的零,我希望它用科学计数法表示。

一些例子会让这一点更清楚,这假设我想要 3 位数字:

值: .2367输出: “0.23”

值: .00367输出: “3.67E-3”

值: 22.3输出: “22.3”

值: 3364.0输出: “3.36E3”

我的解决方案将使用ToString()方法和N 数字格式字符串,如果它导致零恢复为E格式字符串,但这感觉就像在重新发明轮子。有谁知道是否有内置方法可以做到这一点?

4

1 回答 1

15

你看过使用通用数字格式说明符吗?

通用(“G”)格式说明符将数字转换为最紧凑的定点或科学记数法,具体取决于数字的类型以及是否存在精度说明符。

文档中的一些示例:

double number;

number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023

number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03

number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416 
于 2013-02-25T17:21:48.163 回答