Programowanie MCU - największa liczba

Feb 26, 2023 Last reply: 3 years ago 23 Replies

Nie potrzeba aż takich wartości:

$ cat a.c #include <stdio.h>

#include <string.h>

int main() { int i; double a;

a=9007199254740990; for(i=0;i<5;i++)printf("%f\r\n", a++); } $ gcc a.c && ./a.out

90071992547409900.000000 90071992547409901.000000 90071992547409902.000000 90071992547409902.000000 90071992547409902.000000

W dniu 2023-02-26 o 01:35, Stachu Chebel pisze:

Ja bym dał unsigned long long jest liczbą całkowitą.

Tak działa reprezentacja zmiennoprzecinkowa, czego się spodziewałeś? x+y == x dla x dużo większych od y. Ogranicza Cię pojemnośc mantysy, a nie zakres wykładnika, więc pytanie postawione tak, jak to zrobiłeś, jest "not even wrong".

Pozdrawiam, Piotr

Zależy od tego 1. MAX_DOUBLE albo +inf.

Jak się rozumie, co się robi, to licznik na double jest całkowicie dopuszczalny. W IEEE754 zachowuje się jak 53-bitowy integer. A potem przestaje. :-) Obsesyjnie pilnujesz zakresu, albo się dziwisz.

Nie ma się co znęcać nad Kolegą, każdy czegoś nie wie. Choć tutaj te braki są dość fundamentalne.

Pozdrawiam, Piotr

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required