用的是Devc++
by chenzhiyuAndy @ 2024-04-15 13:33:22
@[chenzhiyuAndy](/user/1269186) 百度搜索「浮点数误差」。
by Carroty_cat @ 2024-04-15 13:39:35
@[chenzhiyuAndy](/user/1269186) 改成cout<<int(1*1*1*1-4.65*1*1+2.25*1+1.4);
by Luka__Modric @ 2024-04-15 13:40:46
@[Luka__Modric](/user/839893) Md 炸了。请使用反斜杠。
by Carroty_cat @ 2024-04-15 13:41:46
@[Carroty_cat](/user/912750) @[Luka_Modric](/user/101944)
谢谢,已关,我还有一个问题```double f(double x){return a*x*x*x+b*x*x+c*x+d;}```这个咋改?abcd都是double,加int会影响后面的运算
by chenzhiyuAndy @ 2024-04-15 13:55:09
刚刚那个问题就源自x=1,a=1,b=-4.65,c=2.25,d=1.4的时候
by chenzhiyuAndy @ 2024-04-15 13:56:23
@[chenzhiyuAndy](/user/1269186) nsdd,但是有题目吗
by Luka__Modric @ 2024-04-15 14:09:52
@ Luka_Modric P1024,75ps代码:
```
#include<bits/stdc++.h>
#define INE 0.0001
using namespace std;
double a,b,c,d,s=-101;
double f(double x){return a*x*x*x+b*x*x+c*x+d;}
int main(){
cin>>a>>b>>c>>d;
for(int i=-100;i<=100;i++){
if(f(i)*f(i+1)<=0){
for(double j=i;j<=i+1;j+=0.01){
if(abs(f(j))<INE){
if(j<=s+0.01) break;
printf("%.2lf ",j);
s=j;
break;
}
}
}
}
return 0;
}
```
第二个点WA,第二个点数据:
```
输入:1 -4.65 2.25 1.4
输出:-0.35 1.00 4.00
我的输出:-0.35 4.00
```
by chenzhiyuAndy @ 2024-04-15 14:17:34
@[Luka__Modric](/user/839893)
by chenzhiyuAndy @ 2024-04-15 14:18:16
@[chenzhiyuAndy](/user/1269186) 特判一下吧,一眼盯真浮点误差
by Luka__Modric @ 2024-04-15 14:26:39