只有在需要时才使用科学记数法
本文关键字: | 更新日期: 2023-09-27 18:00:55
我想将double
值解析为string
。我希望我的号码有指定的位数(直到运行时我才知道(。如果这个数字可以用数字的非零值来表示,这就是我想要的。如果这个数字是零,就像这样,我希望它用科学的符号表示。
一些例子会让这一点更清楚,这假设我想要3个数字:
值:.2367输出:"0.23">
值:.00367输出:"3.67E-3">
值:22.3输出:"22.3">
值:3364.0输出:"3.36E3">
我的解决方案将使用ToString((方法和N
数字格式字符串,如果结果为零,则恢复为E
格式字符串,但这感觉像是在重新发明轮子。有人知道是否有内置的方法可以做到这一点吗?
您看过使用通用数字格式说明符吗?
通用("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