由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 问一个C语言中整型和浮点运算的问题
相关主题
女IT民工的梦 zz(转载)读统计硕士or计算机硕士?
各位de过的人生中最可怕的bug是什么?求教:data structure 经典入门书籍
为啥叫浮点?学CS的不会C++是不是很说不过去?
问一个很简单的编程问题F2的CS求助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vostro 230=银河1?2(ZZ) 对计算机系学生的七个建议
帮忙debug这个C程序,谢谢!问问学计算机的同学、家长们,现在还有人学PASCAL吗
问一个简单的C的问题EE的小本准备转CS Phd,请教方向
GRE CS sub要准备啥?CS专业的不懂C语言??
相关话题的讨论汇总
话题: float话题: 输出话题: c语言话题: nn话题: 10
进入CS版参与讨论
1 (共1页)
w******t
发帖数: 241
1
想取一个0-1之间随机数(0.1为单位)。
(rand()%10)/10之后老是不对,无论在哪里加上float的强制转换符都不行。每次
都会出现1.000001或者3.99999999之类的数值,而不是我想要的0.1或者0.4。不知道有
没有什么解决方法。谢谢
b******u
发帖数: 469
2
float zz = ((float)(rand()%10))/10;
C++这个可以

【在 w******t 的大作中提到】
: 想取一个0-1之间随机数(0.1为单位)。
: (rand()%10)/10之后老是不对,无论在哪里加上float的强制转换符都不行。每次
: 都会出现1.000001或者3.99999999之类的数值,而不是我想要的0.1或者0.4。不知道有
: 没有什么解决方法。谢谢

w******t
发帖数: 241
3
试过了,还是不行,需要加什么库文件吗?还是有6.9999999这样的出来。我是直接在
VS里面调试的。不会是编译器有什么问题吧

【在 b******u 的大作中提到】
: float zz = ((float)(rand()%10))/10;
: C++这个可以

b******u
发帖数: 469
4
奇怪,我vs6做的,输出都是0.x。不知道为啥
#include
#include
void main()
{
for (int nn=0;nn<500;nn++)
{
float zz = ((float)(rand()%10))/10;
cout< }
}

【在 w******t 的大作中提到】
: 试过了,还是不行,需要加什么库文件吗?还是有6.9999999这样的出来。我是直接在
: VS里面调试的。不会是编译器有什么问题吧

w******t
发帖数: 241
5
能帮我看看单步调试但是不输出的中间值吗(能不能设个断点看看,因为我这里设断点
看ZZ的值有时候还是会出现.000001或者.99999999)?好像输出的时候自动进行了处理
?谢谢

【在 b******u 的大作中提到】
: 奇怪,我vs6做的,输出都是0.x。不知道为啥
: #include
: #include
: void main()
: {
: for (int nn=0;nn<500;nn++)
: {
: float zz = ((float)(rand()%10))/10;
: cout<: }

b******u
发帖数: 469
6
好像没有发现啥异常情况。。

【在 w******t 的大作中提到】
: 能帮我看看单步调试但是不输出的中间值吗(能不能设个断点看看,因为我这里设断点
: 看ZZ的值有时候还是会出现.000001或者.99999999)?好像输出的时候自动进行了处理
: ?谢谢

w******t
发帖数: 241
7
我发现了问题在哪里,在输出的时候,float只输出了小数点后面6位,但是单步调试的
时候数值时小数点后面7位。我用的是printf("%f\n",zz);来做的。这个问题有什么办
法解决吗

【在 b******u 的大作中提到】
: 奇怪,我vs6做的,输出都是0.x。不知道为啥
: #include
: #include
: void main()
: {
: for (int nn=0;nn<500;nn++)
: {
: float zz = ((float)(rand()%10))/10;
: cout<: }

b******u
发帖数: 469
8
你还有上面说的6.9999么,还是现在只是10^-7之类的精度问题

【在 w******t 的大作中提到】
: 我发现了问题在哪里,在输出的时候,float只输出了小数点后面6位,但是单步调试的
: 时候数值时小数点后面7位。我用的是printf("%f\n",zz);来做的。这个问题有什么办
: 法解决吗

b******u
发帖数: 469
9
用比如%f3.7试试?

【在 w******t 的大作中提到】
: 我发现了问题在哪里,在输出的时候,float只输出了小数点后面6位,但是单步调试的
: 时候数值时小数点后面7位。我用的是printf("%f\n",zz);来做的。这个问题有什么办
: 法解决吗

w******t
发帖数: 241
10
不知道怎么回事我这边有这样情况,我是用C的printf("%f\n",zz),输出没问题。但是
单步调试的时候看zz的值还是有我说的异常现象,难不成是VC++express的问题?

【在 b******u 的大作中提到】
: 好像没有发现啥异常情况。。
w******t
发帖数: 241
11
还是会出现.0000001或者.9999999

【在 b******u 的大作中提到】
: 你还有上面说的6.9999么,还是现在只是10^-7之类的精度问题
w******t
发帖数: 241
12
谢谢,我发现了输出正确的。小数点后面7位,但是调试的时候会显示到小数点后面8位(这样就会有.00000001或者.99999999,刚才少打了一位),输出的时候float自动取到7位。估计是在计算或者VC内部运行的时候先转换成double在处理了。

【在 b******u 的大作中提到】
: 用比如%f3.7试试?
j******n
发帖数: 271
13
Note that 0.1 cannot be exactly represented as an IEEE 754 FP number.

【在 w******t 的大作中提到】
: 谢谢,我发现了输出正确的。小数点后面7位,但是调试的时候会显示到小数点后面8位(这样就会有.00000001或者.99999999,刚才少打了一位),输出的时候float自动取到7位。估计是在计算或者VC内部运行的时候先转换成double在处理了。
w***n
发帖数: 1084
14
nod. 就算printf出来是0.1000000了,其实也不是。

【在 j******n 的大作中提到】
: Note that 0.1 cannot be exactly represented as an IEEE 754 FP number.
1 (共1页)
进入CS版参与讨论
相关主题
CS专业的不懂C语言??vostro 230=银河1?2
非科班出身的想做程序员,考一些证是否有助于找到工作。 (转载)帮忙debug这个C程序,谢谢!
课程指点问一个简单的C的问题
自学CS用PYTHON还是JAVA起步?GRE CS sub要准备啥?
女IT民工的梦 zz(转载)读统计硕士or计算机硕士?
各位de过的人生中最可怕的bug是什么?求教:data structure 经典入门书籍
为啥叫浮点?学CS的不会C++是不是很说不过去?
问一个很简单的编程问题F2的CS求助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
相关话题的讨论汇总
话题: float话题: 输出话题: c语言话题: nn话题: 10