作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 C 语言完全陌生。试图在这里接机。希望你们能帮助我一点,如果我问了一些愚蠢的事情,请提前抱歉,但我真的找不到这个具体问题的任何答案。也很抱歉我的英语。
无论如何,下面是我的代码,对我来说工作正常。
#include <stdio.h>
int main(int argc, const char * argv[])
{
// float variable named "Crit_Dmg"
float Crit_Dmg;
// give "Crit_Dmg" a value
Crit_Dmg = 11.34;
// Log it to the user
printf("Critical Damage = %f.\n", Crit_Dmg);
// Declare Float variable named "Magic_Dmg"
float Magic_Dmg;
// Give Magic_Dmg a value
Magic_Dmg = 5.48;
// Show user
printf("Magical Damage = %f.\n", Magic_Dmg);
// Declare Double variable named "T_Dmg" (Total Dmg)
double T_Dmg;
// calculation of total damage (T_Dmg)
T_Dmg = Crit_Dmg + Magic_Dmg;
// show user Totas Dmg value
printf("Total Damage = %f.\n", T_Dmg);
// end
return 0;
}
printf结果显示
Critical Damage = 11.340000.
Magical Damage = 5.480000.
Total Damage = 16.820000.
Program ended with exit code: 0
但是当我将 Crit_Dmg 和 Magic_Dmg 值增加得更高时,根据我的输入,尾数不准确......
例如我改为
Crit_Dmg = 115.34;
Magic_Dmg = 515.48;
printf 看起来如下
Critical Damage = 115.339996.
Magical Damage = 515.479980.
Total Damage = 630.819946.
Program ended with exit code: 0
为什么尾数没有按照我的输入出现?我该如何修复它?
最佳答案
正如其他人指出的那样, float 存储在基数 2 中,以最大程度地提高给定内存量存储的数字的精度,但并非所有基数 10 小数都具有基数 2 的精确表示,因此有时会出现舍入误差在基数 2 中,您不会在基数 10 中看到这种情况,尽管任意数字的整体精度比使用基数 10 更好。
最简单的解决方法是更明确地格式化输出:
printf("Critical Damage = %.2f.\n", Crit_Dmg);
关于c - printf 中的尾数值略有偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590273/
直接问题:对于一个类对象的三个(或更多)几乎相同的拷贝,我怎样才能最好(或最有效)地存储它们之间的差异? 背景:我有一个需要一组参数的算法: struct params { std::strin
我是一名优秀的程序员,十分优秀!