Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# .NET核心浮点变量don';t打印小数_C#_.net_Ieee 754 - Fatal编程技术网

C# .NET核心浮点变量don';t打印小数

C# .NET核心浮点变量don';t打印小数,c#,.net,ieee-754,C#,.net,Ieee 754,我将2097151.3赋值给浮点变量,应用程序只打印整数部分。可能的错误 public static void Main(string[] args) { float foo = 2097151.3F; Console.WriteLine(foo); // prints 2097151 Console.ReadKey(); } 我正在运行一个.NET核心控制台应用程序 不。浮点数从20世纪40年代就开始出现了。一个浮点数只适用于7位有效数字 距离2097151.3最

我将
2097151.3
赋值给浮点变量,应用程序只打印整数部分。可能的错误

public static void Main(string[] args)
{
    float foo = 2097151.3F;

    Console.WriteLine(foo); // prints 2097151

    Console.ReadKey();
}
我正在运行一个.NET核心控制台应用程序


不。浮点数从20世纪40年代就开始出现了。一个
浮点数
只适用于7位有效数字

距离
2097151.3
最近的
float
2097151.25
,而
WriteLine
非常聪明,知道这一点,因此它会相应地截断


如果你想要精确的十进制值,那么就使用
decimal
类型。

请参见精度规格-只有7位可能的重复,所以问题是如果我实际上是
2097151.25
@HimBromBeere,为什么
WriteLine
会截断该值:因为“笑话”数字是不相关的,而C是合理的。如果必须,您可以调整fomatter以生成所有数字。如果一个浮点(我的浮点是2097151.3)只能存储7个数字(2097151),那么您为什么要说2097151.25?@Joe,因为“7个数字”只是一个近似值。浮点数最多可以存储24位二进制数字(技术上是23位,但在许多情况下基本上是免费的隐式数字),计算结果大约是7位十进制数字。