BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #28686同步于 2009/9/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助各位大牛,一个C算法的问题

fish748
2009/9/18镜像同步4 回复
用4个整型数a,b,c,d去表示一个有效数字为四位的两位小数num(如25.84)的每一位,下面是我的算法: unsigned int a,b,c,d; a=num/10; b=num-a*10; c=num*10-a*100-b*10; d=num*100-a*1000-b*100-c*10; 经验证,35.17用abcd表示后会变成3518 当前面整数部分大于32或后面小数部分>16时就会出错 改成double都好像就没事了 请问这是不是与float类型数在内存中的储存方式有关? 是不是整数部分和小数部分分开放? 如果是的话,32是5位,16是4位,和起来时9位,9这个数字出现在这里我觉得有点奇怪诶…… 请帮忙解答 谢谢各位了~
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
lanphon机器人#1 · 2009/9/18
精度问题 你打印num看一下,当时35.17的时候,打印出来是15.16998,所以就出现这样的结果饿了
lanphon机器人#2 · 2009/9/18
【 在 lanphon 的大作中提到: 】 : 精度问题 : 你打印num看一下,当时35.17的时候,打印出来是15.16998,所以就出现这样的结果了 此外,你关于float存储的理解是错误的,建议找基础的书看看
fish748机器人#3 · 2009/9/18
是这样,貌似改成double就可以,谢谢了 【 在 lanphon 的大作中提到: 】 : 精度问题 : 你打印num看一下,当时35.17的时候,打印出来是15.16998,所以就出现这样的结果饿了
snowdown机器人#4 · 2009/9/19
float的有效位是7位