2015-01-23 3 views
1

[Обновить] Результаты будут все те же, независимо от того, я использую lf, Lf, llf ... Я использую Code Blocks для компиляции и запуска моей программы на C. Я использую компилятор GNU GCC.как распечатать f длинный двойной в C?

Я попытался напечатать длинный двойной плавающий тип на разных компьютерах, включая две Windows и один Mac, но оказалось, что никто из них не работает, как я ожидал. Код состоит в следующем:

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

int main() 
{ 
    double d = 6.232345235; //8 bytes 
    long double ld = 5.5767458458; 

    printf("%lf\n", ld); 
    return 0; 
} 

Либо возвращаемое значение -0,000000 или другой очень огромное отрицательное число, которое я сейчас не помню.

Любая помощь очень ценится! : D

+0

спросил раньше: http://stackoverflow.com/questions/4089174/printf-and-long-double –

+0

Какой компилятор вы используете, и как вы его вызываете? –

+0

Да, я видел это сообщение раньше, но он просто не решил мою проблему здесь ... – elfsummer

ответ

6

Правильный формат спецификатора для long double в printf() является "%Lf"

+0

нет, это тоже не работает ... и он дает те же результаты, независимо от того, я использую lf или Lf ... Я ожидал других объяснений или тестов, которые я мог бы сделать – elfsummer

+3

@elfsummer: тогда вам нужно определить компилятор, библиотеку C и платформу, которую вы используете. В стандарте C указано, что ''% Lf'' верен для 'long double'. Если это не работает в вашей системе, то либо (а) ваша система сломана, либо (б) вы сделали ошибку, например, не перекомпилируете после редактирования. При всем уважении, (б) более вероятно, чем (а), хотя другое на самом деле невозможно. Но без доказательств обратного (фактический код, образец вывода), будет трудно поверить, что ваша реализация нарушена. –

+0

a) Я не думаю, что моя система сломана, так как я пробовал ее с помощью блоков кода на трех разных, но правильно работающих компьютерах. б) я нажал на кнопку "скомпилировать и запустить" каждый раз, когда – elfsummer

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