你没保留小数点后一位
by cclili @ 2022-03-06 17:30:30
```java
System.out.println((int)(sum * 10)/10.0);
```
这不是吗@[cclili](/user/690314)
by bailanxiaozi @ 2022-03-06 23:12:32
@[bailanxiaozi](/user/688916) 不是啊,强制转换成int型的话,只会保留整数部分,小数部分会强制删除的。
by cclili @ 2022-03-07 09:22:48
@[bailanxiaozi](/user/688916) 输出有格式要求的话,你可以用这个试试System.out.printf("%.1f",(要输出的数));
这个语句就是保留小数点后一位了,当然还有其他方法。
by cclili @ 2022-03-07 09:28:25
@[cclili](/user/690314) 但是我是乘以10了之后再进行的强制类型转换,再除以10不就是保留了一位小数吗
by bailanxiaozi @ 2022-03-07 23:36:09
@[bailanxiaozi](/user/688916) 对不起,我的错。
你第二个if判断有问题,范围应该是151<=a&&a<=400.还有其中一个测试案例是输入300,结果是136.89。他保留小数点后一位的结果是136.9。所以,可能结果还要四舍五入。用先乘10再除以10.0的就做不到了。
by cclili @ 2022-03-08 08:57:32
@cclili好的,谢谢
by bailanxiaozi @ 2022-03-08 13:03:36
if (a > 151 && a <= 400)
边界值151取不到
by grigioyn @ 2022-05-12 21:47:45
```c
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a<=150){
printf("%.1f",a*0.4463);
}
else if(a>150&&a<=400){
printf("%.1f",(a-150)*0.4663+150*0.4463);
}
else{
printf("%.1f",(a-400)*0.5663+150*0.4463+(400-150)*0.4663);
}
return 0;
}
```
by nemo2010 @ 2022-07-25 10:46:46