C#中float, double的计算存在精度问题

一、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博客

更多:

C#默认编码、ASCII,Unicode

 C# 扩展方法整理

C# lock关键词/lock语句块、线程锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值