Генерация чисел с плавающей точкой в ​​C на Montavista на КПП - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть следующая простая программа для генерации случайных чисел с плавающей запятой от 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);
        }
}

Она успешно генерирует случайные числа с плавающей запятой от 1 до 4 на компьютере Red Hat Linux с архитектурой x86.Но та же программа выдает 0,0000 как случайное число на PPC под управлением Montavista Linux.

Может кто-нибудь объяснить, почему и как заставить это работать на PPC Montavista?

1 Ответ

0 голосов
/ 18 июня 2011

Смысл в том, что вы должны использовать double вместо float или печати (double)u, так как %f принимает double. У меня сложилось впечатление, что поплавки автоматически переводятся в удвоенные значения при передаче функции vararg.

Вы также можете попробовать напечатать (int)(u*10000).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...