一、C#中float, double的计算存在精度问题
案例1:
double num1 = 0.01;
double num2 = 0.2;
double num3 = num1 + num2;
Console.WriteLine( num3);//0.21000000000000002
//四舍五入
Console.WriteLine(Math.Round(0.2222, 2));//打印:0.22
Console.WriteLine(Math.Round(num3,2));//打印:0.21
案例2:
//Linq Sum() 求和存在精确度误差
//应当计算结果10,实际结算结果9.999999999999998
double[] array3 = new double[] {
3.97,2.82,1.66,0.1,1.45
};
Console.WriteLine(array3.Sum());
double sum = 0;
for (int i = 0; i < array3.Length; i++)
{
sum += array3[i];
}
Console.WriteLine(sum);
//解决方案
//固定精确度,四舍五入
Console.WriteLine(Math.Round(sum, 2));
解决方案:
对于double,float计算,最终结果要指定精确度,四舍五入
运行结果:
二、Js语言浮点数,计算的精度问题
点击查看:
Js 精度问题_Js 数字计算精度问题_js精度问题_天马3798的博客-CSDN博客
更多: