Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 用指数表示法赋值和计算_C#_Visual Studio 2010_Floating Point_Scientific Notation - Fatal编程技术网

C# 用指数表示法赋值和计算

C# 用指数表示法赋值和计算,c#,visual-studio-2010,floating-point,scientific-notation,C#,Visual Studio 2010,Floating Point,Scientific Notation,您是否曾观察到这种现象: 如果我尝试在VisualStudio2010c#.Net中立即计算以下计算,我会得到这个奇怪的解决方案 1E-9 * 100 = 0.00000010000000000000001 1E-9 * 1E+2 = 0.00000010000000000000001 即使我这样计算: double val = 1E-9; 0.000000001 val = val * 100; 0.00000010000000000000001 如果我在Windows calc中计算相同

您是否曾观察到这种现象:

如果我尝试在VisualStudio2010c#.Net中立即计算以下计算,我会得到这个奇怪的解决方案

1E-9 * 100 = 0.00000010000000000000001
1E-9 * 1E+2 = 0.00000010000000000000001
即使我这样计算:

double val = 1E-9;
0.000000001
val = val * 100;
0.00000010000000000000001
如果我在Windows calc中计算相同的计算,我会得到预期的结果:

1E-9 * 100 = 0,0000001

如果有人知道这种行为,我会非常乐意得到这些信息。

不管你是否使用指数表示法,你只是达到了浮点精度。如果您希望获得更高的精度,请使用十进制,例如:

decimal val = 1E-9;
0.000000001
val = val * 100;
0.0000001

请参见

也许windows计算器不使用双倍?为什么您认为它们应该具有相同的精度?您是否对
0.000000100000000000001
的行为感兴趣,这是尝试在二进制计算机中存储十进制数字的结果(以前已经回答过多次),还是对Windows Calc在其他计算机出错时正确执行的事实感兴趣?