Dziwne zachowanie printf z long double

0

Mam małą zagwozdkę:
jak prawidłowowo wypisać coś takiego na ekranie:
Sprawdzałem na Ideone jaka flaga będzie działać i efekt godny uwagi ;)

http://ideone.com/26GjH

 #include <stdio.h>

int main() {
        printf("%.0Lf\n", 1234567890123456789.0);

        return 0;
}

Ktoś pomoże?

0

Zamiast zgadywać warto po prostu przeczytać:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
Poza tym wiesz że liczby maja ograniczony zakres? I doczytałeś jak są definiowane literały? Że napisanie takiego literału wcale auto-magicznie nie robi z niego long double?

0

No nie powiem abyś mi pomógł, jak nie masz nic do napisania to może lepiej nie pisz.
Czytać potrafię i zanim napisałem między innymi na tamtej stronie byłem - szkoda gadać :(

0
mr00zik napisał(a)

No nie powiem abyś mi pomógł, jak nie masz nic do napisania to może lepiej nie pisz.
Czytać potrafię i zanim napisałem między innymi na tamtej stronie byłem - szkoda gadać :(
jedyne co powinno cie wkurzyć to twój brak umiejętności wyszukiwania informacji w sieci, radzenia sobie z problemami, czytania ze zrozumieniem oraz wykorzystywania odpowiedzi bardziej doświadczonych kolegów z forum. Nie posiadasz nic z tego, nie wróżę ci więc świetlanej przyszłości przed kompilatorem.

0

Sorry ludziska, trochę mnie poniosło. Po prostu mam już swoje latka, nie mam 15 lat i nie uczę się od podstaw.
Wiem, że może mój post mógł sugerować coś innego.
Mój post miał na celu nie odkrycie co robią flagi czy jak definiuje się literały ale pogłębienie wiedzy na temat long double i jego precyzji.
Napisałem program na spoj'u (anglojęzycznym), który przy dużych liczbach daje złe odpowiedzi i pomyślałem sobie, że to forum to dobre miejsce aby pogłębić
swoją niefachową bo hobbistyczną wiedzę.

Więc może spróbuję tak, czy można zmusić jakoś long doubla do większej dokładności?
Wiem, że kod, który wkleiłem powinien wyglądać tak:

#include <stdio.h>

int main() {
        printf("%.0Lf\n",(long double)1234567890123456789.0);

        return 0;
} 

Ale i tak daje nie takie wyniki jakie bym oczekiwał i właśnie dlatego się zastanawiam czy da się to jakość obejść.

1

Znaczy masz 16 lat? ;] Nadal nie rozumiem czemu nie przeczytasz o tym o czym pisałem, tylko próbujesz na siłę coś wymyślić.
http://www.cplusplus.com/doc/tutorial/constants/

The default type for floating point literals is double. If you explicitly want to express a float or a long double numerical literal, you can use the f or l suffixes respectively:

3.14159L // long double
6.02e23f // float

Tak trudno było?

0

Dzięki :)
A lat mam 31

1 użytkowników online, w tym zalogowanych: 0, gości: 1