当分数值为5时如何更改前一个分数

阿尼克的梦想

我试图编写一个代码,如果小数位值为0.005,则在十进制值之后,它将把值打印为0.01。我尝试使用%0.02f,但此方法无效。我的完整代码如下和输入值。

    #include<stdio.h>
int main()
{
    float a,b,c=0,d=0,e=0;
    while(1)
    {
        a=0;b=0;c=0,d=0,e=0;
    scanf("%f%f",&a,&b);
    c=b-a;
    d=c*100.0;
    e=d/a;
    //printf("%0.2f\n%0.2f\n%0.2f\n",c,d,e);
    printf("%0.2f%%\n",e);
    }

    return 0;
}

输入 999.95 1000.00

预期输出= 0.01%

我的输出= 0.00%

暗影游侠

数学的32位floats的最终值为,e0.004999...不是0.005您期望的(并舍入为0.01的“逻辑”只是它是如何与浮点运算四舍五入到小数点后两位精确地描述结果为0.00; 它小于0.005,因此四舍五入而0.00不是0.01

使用更精确的类型(double可能会有所帮助(在[更改scanf为使用后%lf]在我的机器上确实有用,但是许多编译器,尤其是具有更高优化的编译器和某些体系结构,都违反了IEEE-754规范,并且可能会不同意),但从根本上讲,浮点数学运算会引入相对于精确逻辑算术的误差,因此,如果您不能容忍甚至很小的误差,则应使用其他方法,例如,int基于定点的数学运算libmpdec或诸如此类的全十进制(以10为底)浮点点数学。

请注意,根据您选择的操作,可能需要注意舍入模式。C99舍中途值远离零,但也有其他舍入模式(圆形半甚至是常见的一种,由于没有引入的舍入偏置),这将产生0.00四舍五入至小数点后两位的时候,即使你没有产品0.005恰恰。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django-如何获得前10名最高分数,但将其限制为每位用户一个分数?

如何在SAS中为每个观察创建一个包含Ridit分数的变量?

学生分数加总一个学生的总分数

给课程分配一个随机分数

在一个UILabel中显示分数

如何在多项选择活动中更改问题并将分数传递到下一个活动

快速从Facebook SDK解析JSON时如何检索分数值

如何从具有很多词典的列表中为每个玩家获得高分?每个字典是一个名称和一个分数

Excel 如何将分数保留为分数 5/5 不是 1 或 0/5 不是 0

使用Java split()拆分数据,使第一个数组的数据为空

这是什么错误,因此我如何显示 .csv 文件中的前 5 个分数?

如何从文本文件中打印前 5 个分数

当他们的分数有联系时,优先选择一个观察

满足 R 中的条件时从另一个数据帧计算 z 分数

拆分数值并找到唯一的数字

为Vuex商店中的每个商品分配一个分数(基于计算),然后按分数对所有商品进行排序

如何编写一个循环来反复计算仿真次数的分数?

如何在R中生成一个正负分数序列

我将如何创建一个具有输入z分数的概率的函数?(C ++)

如何用另一个数据框替换部分数据框

如何为每个句子分数计算一个句子中每个单词的出现次数?

如何根据另一个数组中的元素拆分数组

如何仅返回学生在日期之前收到的最后一个分数?

如何在字符串内拆分数字(第一个位置)?

scikit-learn-如何绘制仅与一个班级相关的分数的学习曲线

如何取一个整数并在其上使用分数

如何拆分数据框中的值并替换为另一个值

如何在React中显示分数值?

如何按科目名称计算分数值?