2015-06-25 2 views
0

У меня есть этот код:Получить десятичное значение после деления большого числа

#include <stdio.h> 

int main(void) 
{ 
    double infre = 11e10; 
    double c = 2.99795e8; 
    double wavelength = c/infre; 
    double delx = 0.600000000e-04; 

    double nperdt = 2*((int)(wavelength/delx)); 
    double dt = 1.0/infre/(double)nperdt; 
    printf("%.11f", dt); 
    return 0; 
} 

Теперь dt, как предполагается, очень мало. Так есть ли какая-либо возможность получить эту ценность при делении, поскольку в настоящее время я получаю 0.0

+4

Используйте экспоненциальный формат '% e' или« общий »формат'% g' вместо '% f' при печати результата. –

+0

Также: рекомендуется использовать 'trunc()', а не '(int)' as '(int)' строго ограниченным для 'double()'. – chux

ответ

2

Ну, вы можете попробовать, например, увеличить цифры, показанные после «.». Кажется, что ваша ценность лежит где-то в диапазоне 10^-13, и в настоящее время вы показываете только первые 11 цифр после десятичной точки. Например, "%.19f" отобразит ненулевой результат. Кроме того, вы можете распечатать их в экспоненциальном формате, используя %e, что на самом деле является предпочтительным решением в этой ситуации.

Смежные вопросы