- 津津的储蓄计划
- 2015-12-02 22:14:23 @
在P1096 津津的储蓄计划这道题目中,
因为最后要 多出20%,所以一开始我是这么写的(int)(save*1.2) 不过,WA了。
然后,我便用save+save/5,AC了。
后来,我用 trunc(save*1.2) ,WA了。
再后来,我用round(save*1.2),AC了。
这是我感到很不解的地方,
引用math.h文件中的一段注释:
/* round towards zero, regardless of fpu control word settings /
extern double __cdecl trunc (double);
/ round away from zero, regardless of fpu control word settings */
extern double __cdecl round (double);
所以trunc是朝向0,舍入的。而round是远离0,舍入的。
按道理 (int)trunc(save*1.2) 应该跟 save+save/5相等才对。
我做了一个循环来检验,
for(k=1;k<100000;k++)
if((int)trunc(k*1.2) != (int)trunc(k*1.2)){
printf("%d",k);
return 0;
}
是正确的。
所以我很不解为什么?求大神指点。
0 条评论
目前还没有评论...