请问float或double精度相关的有关问题

请教float或double精度相关的问题
各位大大,本人有个关于精度计算的实例,做不下去特来此处请教

float x=47;
x+=0.1;
此时 printf x的值是47.099998,因为有特别需要,要求计算的时候可 以精确到0.1;
请问有什么办法可以确保x+=0.1 等于 47.1呢? 还有就是41.7xxxx 这里的xxxx要为0的,因为只想要的是0.1这个小数位;
请问C可以办到吗?
------解决方案--------------------
GCC 提供有 decimal的扩展

http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html
------解决方案--------------------
float的精度无法保证你的需求,换成double就可以
------解决方案--------------------
如果只是要求精确到0.1的话,可以将数值放大10倍,用整数计算:
int x=470;
x+=1;
取结果的时候x/10就是整数部分,x%10是小数部分。
------解决方案--------------------
引用:
各位大大,本人有个关于精度计算的实例,做不下去特来此处请教

float x=47;
x+=0.1;
此时 printf x的值是47.099998,因为有特别需要,要求计算的时候可 以精确到0.1;
请问有什么办法可以确保x+=0.1 等于 47.1呢? 还有就是41.7xxxx 这里的xxxx要为0的,因为只想要的是0.1这个小数位;
请问C可以办到吗?

如果要求比较严格,那就换成高精度的库,如GMP,
否则#1介绍的类型就够用了。