我想将double
值解析为string
。我希望我的号码具有指定的位数(直到运行时才会知道)。如果这个数字可以用数字的非零值表示,这就是我想要的。如果数字是这样的零,我希望用科学记数法表示。
一些例子会使这更清楚,这假设我想要3位数字:
价值 .2367 输出“0.23”
价值 .00367 输出“3.67E-3”
价值 22.3 输出“22.3”
价值:3364.0 输出“3.36E3”
我的解决方案是使用ToString()方法和N
numeric format string,如果它导致零恢复为E
格式字符串,但这感觉就像重新发明轮。有没有人知道内置方法是否可以做到这一点?
答案 0 :(得分:15)
您是否考虑过使用General Number Format Specifier?
通用(“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