当我使用标准数字格式“G4”将 double 显示为字符串时,我得到以下结果:
.0000001 -> 1E-07
.000001 -> 1E-06
.00001 -> 1E-05
.0001 -> 0.0001
.001 -> 0.001
.01 -> 0.01
.1 -> 0.1
1 -> 1
10 -> 10
100 -> 100
1000 -> 1000
10000 -> 1E+04
100000 -> 1E+05
我宁愿有以下内容(更改的行已加星号):
.0000001 -> 1E-7 **
.000001 -> 1E-6 **
.00001 -> 1E-5 **
.0001 -> 0.0001
.001 -> 0.001
.01 -> 0.01
.1 -> 0.1
1 -> 1
10 -> 10
100 -> 100
1000 -> 1000
10000 -> 1E4 **
100000 -> 1E5 **
如何使用标准或自定义数字格式字符串完成此操作?这甚至可能仅使用数字格式字符串吗?
最佳答案
如果有人发布了一个完全符合您需要的字符串格式,那就太好了,但在那之前......
以下扩展方法将执行您想要的操作:
public static string ToFormattedString(this double i)
{
var sciNumber = i.ToString("G4");
// If the number has no exponent (such as .0001 or 100), return it as-is
if (!sciNumber.Contains("E"))
return sciNumber;
var parts = sciNumber.Split('E');
return string.Concat(parts[0], "E", Convert.ToInt32(parts[1]));
}
通过获取字符串的指数部分并将其再次转换为 double ,我们可以(作为副作用)最终将 -07
转换为 -7
和 +04
到 4
。
应该可以使用以下方式调用它:
var input1 = .0000001;
var input2 = 10000;
var output1 = input.ToFormattedString(); // 1E-7
var output2 = input.ToFormattedString(); // 1E4
关于c# - 调整 "G"格式说明符显示指数格式的方法(或替换为自定义数字字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24899608/