b=(int)(a*100+0.5); 不管你输入的是何小数最终都被强制转换为整形了。以最小的1为例,(int)(1*100+0.5)=100.
应该这么改:c=b/100.0//这样100.0为浮点型,b为整型,运算时b将被强制转换为浮点型,然后再运算,结果也为浮点型,所以小数部分得以保留。