C# 双变量计算
这是我问题的最简单形式,我想知道这是怎么发生的C# 双变量计算,c#,math,double,calculation,C#,Math,Double,Calculation,这是我问题的最简单形式,我想知道这是怎么发生的 Console.WriteLine(3.12 * 3.14); 它是如何给出这个结果的 9.796800000000001 这使我对我的通用代码和程序产生了问题。如何避免这种情况并给出准确的期望输出?您可以使用float var x = (float)3.12; // or var x = 3.12f var y = (float)3.14; var result = x * y;
Console.WriteLine(3.12 * 3.14);
它是如何给出这个结果的
9.796800000000001
这使我对我的通用代码和程序产生了问题。如何避免这种情况并给出准确的期望输出?您可以使用
float
var x = (float)3.12;
// or var x = 3.12f
var y = (float)3.14;
var result = x * y;
Console.WriteLine(result);
谢谢,我想知道为什么我不知道这一点:(如果我的问题这么业余,很抱歉。但是我在链接中找不到如何避免这个问题的答案。谢谢你的答案。为什么(双精度)不起作用。还有一个业余问题,为什么
float pi=3.14;
出错,需要(float)3.14
?这是关于硬件(CPU)的问题计算64位浮点。编译器为3.14
分配64位内存,float
为32位。(float)
将64位变量(double
)强制转换为32位变量(float
).3.14f
直接创建32位。当然,你也可以使用十进制。舍入错误发生在64位,而不是32位和128位。decimal
提供了更高的灵敏度,但需要更多的CPU周期。是的,我发现这对任何和我有同样问题的人都很有用:我看到float
可能在roundi中产生问题我也是。谢谢你的回答。