判断水仙花数,为什么没有153

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int i,j,k,s;
    for(i=100;i<=999;i++)
       {
           s=0;
           j=i;
           do{
              k=j%10;
              s+=pow(k,3);
              j=j/10;
           }while(j>0);
        if(s==i) printf("%d\n",i);
       }
    return 0;
}

图片说明

s+=pow(k,3);
这个代码不可靠,因为pow是浮点计算,存在误差,而转换成int以后可能有精度误差,造成误判。
s+=(int)(pow(k,3)+0.5);
四舍五入下