0

我有以下简单的程序来生成 1 到 4 之间的浮点随机数:

#include<stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
    int i = 0;
    float u;

        srand((unsigned)time(NULL));
        for(i = 0;i< 10000 ; i++)
        {
            u =  ((4-1)*((float)rand()/RAND_MAX))+1;
            printf("The random value for iteration = %d is %2.4f \n", i, u);
        }
}

它在 x86 Red Hat Linux 机器上成功生成 1 到 4 之间的浮点随机数。但是同样的程序在运行 Montavista Linux 的 PPC 上产生 0.0000 作为随机数。

有人可以解释为什么以及如何在 PPC Montavista 上进行这项工作吗?

4

1 回答 1

0

一个预感是你应该使用 double 而不是 float 或 printing (double)u,因为%f需要一个 double 。我的印象是浮点数在传递给可变参数函数时会自动提升为双精度。

您也可以尝试打印(int)(u*10000)

于 2011-06-18T02:02:59.287 回答