因为print语句中你的输出格式为%d(整型)可以改为%f。
你对这个回答的评价是
你对这个回答的评价是?
你对这个回答的评价是
你对这个回答的评价是?
因为print语句中你的输出格式为%d(整型)可以改为%f。
你对这个回答的评价是
你对这个回答的评价是?
你对这个回答的评价是
你对这个回答的评价是?
太烦琐有没高效点的方法?
new中保存的是tmp强制转型为float的数据.
为什么if的判断语句又是:
我觉得楼主想表达的昰先把要检验的数的小数部分去掉转成整型,然后判断原来的数与整型的差如果为0则说明小数部分为0
可以考虑一下fmod函数:
记得里面有个關于浮点零的比较
不建议直接用0==这样直接比较!!
请不要拿float类型的数与0比较,会有误差的你用abs(x-int(x))<0.000001做判断吧,至于为什么是0.000001我也不清楚嘿嘿,反正是误差范围就那么大
LZfloat的精度不够,只能输出小数点后的六位数字也就是说,如果小数点后的小数部分如果有效数字出现了多位连续的0的话就成整数了,如 5.31
用modf()函数用法是这样的:
函数用途:分解x,以得到x的整数和小数部分
输入参数:x 待分解的数
返回值:x 嘚小数部分
如果这个库函数LZ觉得麻烦的话,还可以这么来将浮点数转换为字符串,然后自己编写一个循环就可以获取小数部分了有這样一个将浮点数转换为字符串的库函数
查查帮助,就知道这函数怎么调用了~~
其实你要知道浮点数的表示方式
直接取2进制中的某几位
5楼的答案是错的应该是a-(int)a才对。11楼的方法可以通过二进制位的移动来是个比较好的方法
这种情况跟计算机的存储是有关系的:
计算机只能储存2^n的数字(N可以小于0);
也就是說像8、4、2、0、1/2、 1/4、 1/8等,或者它的组合才可以精确表示其他的数字对他来说是无理数;
对于计算机来说 只能储存2^n的数字(N可以小于0),僦是对于计算机1/2 1/4 1/8等或者它的组合才可以精确表示,其他的数字对他来说是无理数比如3.3中的0.3计算机就要用1/4+1/32+1/一堆东西算出来,因此做不到精确
你对这个回答的评价是?