相关疑难解决方法(0)

没有科学记数法的双到字符串转换

如何在.NET Framework中没有科学记数法的情况下将double转换为浮点字符串表示形式?

"小"样本(有效数字可以是任何大小,例如1.5E2001e-200):

3248971234698200000000000000000000000000000000
0.00000000000000000000000000000000000023897356978234562
Run Code Online (Sandbox Code Playgroud)

的无标准的数字格式都是这样的,和一个自定义格式也似乎并没有让小数点后具有开放位数.

这不是如何将double转换为字符串而没有10代表(E-05)的重复,因为那里给出的答案并没有解决手头的问题.这个问题中接受的解决方案是使用固定点(例如20位数),这不是我想要的.固定点格式化和修剪冗余0不能解决问题,因为固定宽度的最大宽度为99个字符.

注意:解决方案必须正确处理自定义数字格式(例如,其他小数分隔符,具体取决于区域性信息).

编辑:问题实际上只是取代前面提到的数字.我知道浮点数如何工作以及可以使用和计算哪些数字.

.net c# floating-point number-formatting

71
推荐指数
6
解决办法
8万
查看次数

如何将double转换为字符串而无需10次表示(E-05)

如何将double转换为字符串而无需10次表示(E-05)

double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
Run Code Online (Sandbox Code Playgroud)

我想字符串文本是0.000099999999833333343(或者差不多,我不做火箭科学:)

我尝试过以下变种

Console.WriteLine(value.ToString());      // 9,99999998333333E-05
Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05
Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330
Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330   
Run Code Online (Sandbox Code Playgroud)

做串扰N20或格式F20似乎最接近我想要的,但我最终得到了很多尾随零,是否有一种聪明的方法可以避免这种情况?我想尽可能接近双重表示0.000099999999833333343

c# tostring

12
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

floating-point ×1

number-formatting ×1

tostring ×1