小编Inz*_*za8的帖子

浮点减法给我不准确的结果

我正在编写一个代码,其中每半秒进行一次测量,需要从初始值中减去最终达到0.两个值都是浮点数.初始值为140 000 000,测量范围为0.320000001至0.389999999.

    float batt = 140000000.00; //capacity 140M units
    float subtr;

    /.../
    while(1){
          batt = float(batt - subtr);
    /.../
    }
    
Run Code Online (Sandbox Code Playgroud)

所以基本上我需要它从148,000,000.00的每个循环减去0.3xxxxxxxx,但似乎有一个大小问题所以当我调试它时我仍然每次得到148M.

我尝试使用1000x较小的battbatt值,148 000,并将测量值从0.3xxxxxxxx转换为0.0003xxxxxxxx.调试代码时,148000 - 0.000300005049(测量值)给出147999.469,这是预期结果(147,999.999,699)的.530699.

似乎浮动对我的需求不够准确,我应该将我的值转换为其他类型,还是有其他方法可以获得准确的结果?正在考虑将测量值转换为没有小数的值,但这也不会起作用,因为初始值对于float(148*10 ^ 15)来说太大了.当使用140,000,000.00时,我希望得到三位小数(.xxx)的准确度,并相应地使用140,000.00准确度的六位小数(.xxx,xxx).

c++ floating-accuracy subtraction

-2
推荐指数
1
解决办法
84
查看次数

标签 统计

c++ ×1

floating-accuracy ×1

subtraction ×1