永发信息网

c++高手进 float 精度问题,这个要是丢失精度的话应该小才对?为什么变大了?

答案:6  悬赏:0  手机版
解决时间 2021-02-07 00:42
  • 提问者网友:贪了杯
  • 2021-02-06 12:10
#include
#include
using namespace std;
int main()
{
float n=0.15;
printf("%.15lf\n",n);
return 0;
}
最佳答案
  • 五星知识达人网友:执傲
  • 2021-02-06 12:55
32bi浮点只有约6个(不到7个)十进制有效数字..
而%.15lf设了小数点后15个数位的精度,有多余输出。
所以0.(150000)005960464中只有括号部分是精确的,其余的数值可以舍去,
全部回答
  • 1楼网友:酒醒三更
  • 2021-02-06 16:14
计算机中的浮点数本来是不准确的,算个大概的
  • 2楼网友:空山清雨
  • 2021-02-06 16:02
printf("%.2e\n",n); 强大的printf函数,用科学计数法输出。不过10^(-5)等价于e-5
  • 3楼网友:神的生死簿
  • 2021-02-06 15:46
你这种情况,是你的数据在内存中溢出造成的,至于变大变小 这要判断float在内存中是如何存储的。 你可以去找一下 计算机组成原理 看一下 里面降到浮点数在计算机中的存储形式,是由阶符和阶码构成 相如32位子长的计算机 第多少位到多少位是阶符 第多少位到多少位是阶码
  • 4楼网友:有你哪都是故乡
  • 2021-02-06 14:30
float应该用%f输出,而且你要输出的位数大于他的精度,所以后面是随机值,跟大小没关系
  • 5楼网友:旧脸谱
  • 2021-02-06 13:53
因为%.15lf的意思是格式化输出小数点後15位,因此有了你现在的结果
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯