w******t 发帖数: 241 | 1 【 以下文字转载自 CS 讨论区 】
发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS
标 题: 问一个C语言中整型和浮点运算的问题
发信站: BBS 未名空间站 (Fri Nov 27 21:50:12 2009, 美东)
想取一个0-1之间随机数(0.1为单位)。
(rand()%10)/10之后老是不对,无论在哪里加上float的强制转换符都不行。每次
都会出现1.000001或者3.99999999之类的数值,而不是我想要的0.1或者0.4。不知道有
没有什么解决方法。谢谢 |
y*******g 发帖数: 6599 | 2 打印的时候只打2位
【在 w******t 的大作中提到】 : 【 以下文字转载自 CS 讨论区 】 : 发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS : 标 题: 问一个C语言中整型和浮点运算的问题 : 发信站: BBS 未名空间站 (Fri Nov 27 21:50:12 2009, 美东) : 想取一个0-1之间随机数(0.1为单位)。 : (rand()%10)/10之后老是不对,无论在哪里加上float的强制转换符都不行。每次 : 都会出现1.000001或者3.99999999之类的数值,而不是我想要的0.1或者0.4。不知道有 : 没有什么解决方法。谢谢
|
w******t 发帖数: 241 | 3 老大,我要在程序中反复用这个产生的随机数。
【在 y*******g 的大作中提到】 : 打印的时候只打2位
|
t****t 发帖数: 6806 | 4 问题是, 0.1就没有二进制的精确表示
【在 w******t 的大作中提到】 : 老大,我要在程序中反复用这个产生的随机数。
|
w******t 发帖数: 241 | 5 问题已解决
输出正确的。小数点后面7位,但是调试的时候会显示到小数点后面8位(这样就会有.
00000001或者.99999999,刚才少打了一位),输出的时候float自动取到7位。估计是
在计算或者VC内部运行的时候先转换成double在处理了。
【在 w******t 的大作中提到】 : 老大,我要在程序中反复用这个产生的随机数。
|