在PPC上Montavista上的C中的浮点数生成

时间:2011-04-17 11:45:19

标签: c powerpc

我有以下简单的程序来生成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上完成这项工作?

1 个答案:

答案 0 :(得分:0)

预感是你应该使用double而不是float或打印(double)u,因为%f需要加倍。我的印象是浮动在传递给vararg函数时会自动提升为double。

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