Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将10次方的双精度表示法转换为十进制?_C#_Double_Decimal - Fatal编程技术网

C# 如何将10次方的双精度表示法转换为十进制?

C# 如何将10次方的双精度表示法转换为十进制?,c#,double,decimal,C#,Double,Decimal,我使用的方法返回一个双倍数。该数字在0之后最多可以有8个十进制符号。当小数接近1时,它将返回类似于0.045的值。但是当数字变得非常小时,它开始将其转换为科学记数法,我会得到类似:4.99E-06。 如何将此变量转换为十进制,使其显示为0.00000470?可以执行以下操作: double myValue = 0.000007812345d; string myValueAsString = myValue.ToString("F20"); Console.Out.WriteLine(myVal

我使用的方法返回一个双倍数。该数字在0之后最多可以有8个十进制符号。当小数接近1时,它将返回类似于0.045的值。但是当数字变得非常小时,它开始将其转换为科学记数法,我会得到类似:4.99E-06。
如何将此变量转换为十进制,使其显示为0.00000470?

可以执行以下操作:

double myValue = 0.000007812345d;
string myValueAsString = myValue.ToString("F20");
Console.Out.WriteLine(myValueAsString);
double myConvertedValue = Double.Parse(myValueAsString);
Console.Out.WriteLine(myConvertedValue); // note that this string is treated with scientific notation
其中,F20指定您希望在小数点后有20位小数的定点输出。看

稍后,如果需要将字符串值转换回double,可以执行以下操作:

double myValue = 0.000007812345d;
string myValueAsString = myValue.ToString("F20");
Console.Out.WriteLine(myValueAsString);
double myConvertedValue = Double.Parse(myValueAsString);
Console.Out.WriteLine(myConvertedValue); // note that this string is treated with scientific notation

只有在原始双变量超出范围时,才需要执行此操作。否则,只需使用原始的双精度进行计算,等等。

您在哪里使用这个变量,它正在转换为科学符号?只是在调试器中?我认为共享一些代码会很有帮助。所讨论的值是从API调用返回的。您对此问题做过任何研究吗?也许从阅读
double.ToString
的文档开始,我不明白为什么
4.99e-6
会显示为
0.00000470
,而不是
0.00000499
。额外的
0.00000029
到哪里去了?所以它会变成一个字符串,如果以后我想再次将其用作数字,那么我可以将其转换回double?是的,您只需要使用double。Parse@SSJ5Broli:否,将生成一个新字符串。当你说“123的文本是什么?”时,数字123并不停止是一个数字。还是个数字。您的double没有改变,因为它会问“如何将其呈现为字符串?”这样的问题,就像使用web应用程序一样,我认为OP会使用该值,需要稍后将其转换回来@Eric Lippert说得对,如果变量仍然在范围内,您可以继续使用原来的double。好的,谢谢,不管数字是显示为E还是十进制,它看起来仍然可以毫无顾忌地工作