Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# 为什么float在声明时显示精确表示_C#_C++_.net_Floating Point - Fatal编程技术网

C# 为什么float在声明时显示精确表示

C# 为什么float在声明时显示精确表示,c#,c++,.net,floating-point,C#,C++,.net,Floating Point,我在和MSDN中多次阅读到float(或double)没有实际整数或十进制值的精确表示。对的当等式检查出错时,或者在断言简单的加法或减法测试时,这是可见的 也有人说float没有精确的十进制值表示,比如0.1,但是如果我们在VisualStudio中声明一个float,比如float a=0.1f,调试时如何显示精确的0.1?它应该显示类似于0.09999999..的内容。我在哪里错过了理解它的链接 这是一个门外汉式的问题,或者可能是我仍然缺少一些概念 调试时如何显示精确的0.1 0.1不是浮

我在和MSDN中多次阅读到
float
(或
double
)没有实际整数或十进制值的精确表示。对的当等式检查出错时,或者在断言简单的加法或减法测试时,这是可见的

也有人说float没有精确的十进制值表示,比如0.1,但是如果我们在VisualStudio中声明一个float,比如
float a=0.1f,调试时如何显示精确的0.1?它应该显示类似于
0.09999999..
的内容。我在哪里错过了理解它的链接

这是一个门外汉式的问题,或者可能是我仍然缺少一些概念

调试时如何显示精确的0.1

0.1不是浮点的精确值。它恰好是您在原始赋值中指定的,但这不是浮点值。我可以看出这是令人困惑的:)我怀疑调试器显示的是最短的字符串表示形式,它明确地以相同的值结束

尝试使用:

float a = 0.0999999999f;
。。。然后我怀疑在调试器中,您也会看到
0.1

因此,调试器并不是在显示“更精确”的值,而是在显示“更普遍方便”的表示


如果您想显示存储在浮点或双精度中的精确值,我有。

谢谢Jon!我在读你的文章和你指出的另一篇文章。我还运行了DoubleConverter.cs。这一切都提出了这个问题。但现在我更清楚了。在你回答之前,我还想知道你写双转换器得到浮点的精确表示是什么意思;因为正如前面讨论的那样,IDE本身显示了0.1。@NirajDoshi:对-我的观点是0.1不是确切的值。我将对答案进行编辑以使其更清晰。
0.1f
类似于
0.10000001490161119384765625
,因此只有在第9个有效数字上才有内容!=初始值
1
后的0和
浮点值
的精度仅为7位左右。