Errori, bug, domande - pagina 2623

 
Vladimir Pastushak:

Matematica abbastanza divertente

Risultato

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0 .06000000 0.01 6.00

È una domanda ricorrente.
Tutti parlano sempre dello standard IEEE 754, ma spesso quando la gente va su Wikipedia, sia per complessità, sia per pigrizia, se ne va senza capire il significato dello standard.

Dedicherò un po' di tempo per cercare di spiegare questa norma nel modo più breve possibile e con parole semplici, per fare ulteriore riferimento a questo post.


Quindi, il tipo doppio consiste di 8 byte = 64 bit.(float 4 byte = 32 bit)

E la rappresentazione numerica deldoppio e del float consiste di 3 componenti:segno, esponente e mantissa


DOPPIO:


GALLEGGIANTE:

Naturalmente non esiste una rappresentazione decimale dei numeri in questo formato, ma solo binaria.

  • Il segno è 1 bit. Se 0 è + (più), se 1 è - (meno).
  • L'esponente memorizza il grado per il numero 2. Può essere nell'intervallo da -12610 a 12710 per i float e da -1022 10 a 102310 per i double
  • La mantissa è la parte frazionaria del numero stesso in forma binaria, ridotta a una forma in cui la virgola sta dopo la prima unità senza tener conto di questa prima unità e della virgola


Un po' di comprensione della rappresentazione binaria dei numeri e la sua relazione con i numeri decimali:

24= 100002 = 1610

23= 10002 = 810

22= 1002 = 4

21=102= 2

20=12=110

2-1= 0.12 =(1/2)10= 0.510

2-2= 0.012 = (1/4)10= 0.2510

2-3= 0.0012 = (1/8)10= 0.12510

2-4= 0.00012 = (1/16)10= 0.062510

2-5= 0.000012 = (1/32)10= 0.0312510

2-6= 0.0000012 = (1/64)10= 0.01562510

2-7= 0.00000012 = (1/128)10= 0.007812510

2-8= 0.000000012 = (1/256)10= 0.0039062510

2-9= 0.0000000012 = (1/512)10= 0.00195312510

2-10= 0.00000000012 = (1/1024)10= 0.000976562510

2-11= 0.000000000012 = (1/2048)10= 0.0004882812510

2-12= 0.0000000000012 = (1/4096)10= 0.00024414062510

2-13= 0.00000000000012 = (1/8192)10= 0.000122070312510

Consideriamo degli esempi per il tipo doppio:

Esempio 1

Abbiamo un numero decimale: 891677.4025191

Questo numero può essere rappresentato in forma binaria:

110110011010110001010101.0110011100001011011101110111011000100000111111111010001110
(chi vuole può controllare))

Estraiamo la mantissa del numero dato semplicemente spostando la virgola 19 cifre a sinistra (in questo caso) in modo che venga dopo la prima unità.

1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219

Ma abbiamo una mantissa di soli 52 bit. Quindi prendiamo i primi 52 bit significativi

Мантисса = 1011001101100011101011001110000101101111101111000101

Esponente = (19+1023)10 = 100000100102(poiché l'esponente è un numero firmato e l'esponente può essere negativo (per esempio se abbiamo 0,0000042132), dobbiamo aggiungere 1023 a10(01111111111112), 011111111112 è zero, tutto ciò che è più è positivo, meno è negativo. In altre parole, per ottenere il valore inverso dell'esponente, dobbiamo sottrarre 1023 dal valore di 11 bit dell'esponente.

In totale, il nostro numero 891677.4025191 apparirà come segue nel tipo doppio:

0100000100101011001101100011101011001110000101101111101111000101

Ma poiché questa è una rappresentazione binaria, convertiamola esattamente in decimale:

che sarebbe891677.402519099996425211429595947265625


Esempio #2

Abbiamo un numero decimale: -0.00000145258556224114

Questo numero può essere rappresentato in forma binaria:

-0.000000000000000000011000010111101100111010110111010011010101001111001110

Estraiamo la mantissa di questo numero semplicemente spostando la virgola di 20 cifre a destra, in modo che sia dopo la prima.

1.1000010111101100111010110111010011010101001111001110 * 2-20

Мантисса = 1000010111101100111010110111010011010101001111001110

esponente = (-20+1023)10=011111010112

segno meno, quindi il primo bit è 1.

Il nostro numero totale -0.00000145258556224114 apparirà come segue nel tipo doppio:

1011111010111000010111101100111010110111010011010101001111001110

convertirlo esattamente in decimale:

это будет -0.00000145258556224113991124017968015191826225418481044471263885498046875



Nel vostro caso, il problema si verifica con il numero 0,01, poiché nel tipo doppio sarà rappresentato nella forma:

0 01111111000 0100011110101110000101000111101011100001010001111011

che quando viene convertito nel sistema di notazione decimale è uguale a 0,010000000000000000208166817117216858513294309377670288085937510

Mentre con la rappresentazione

310 = 1.5*2 = 1.12*21

510 = 2.5*2 = 10.12*21

610 = 1.5*4 = 1.12*22

710 = 3.5*2 = 11.12*21

nessun problema.

Perché il numero doppio 0,01 è davvero maggiore di 0,01?

Ecco perché:

0 01111111000 01000111101101011101000010101111010111010101001010001111011 - 0.01000000000000000020816681711721685132943093776702880859375 errore = 0.000 000 000 000 000 000 000 208166817...

0 0111111111000 01000111101101011100001011110111001010001111010 - 0.00999999999999999998474734433411404097569175064563751220703125 errore = - 0.000 000 000 000 000 001 5265566...

Per capire la chimica di questo processo si può giocare con queste calcolatrici:
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html

https://baseconvert.com/ieee-754-floating-point

 
Vladimir Pastushak:

Matematica abbastanza divertente

Risultato

2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Prossimo lotto = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Prossimo lotto = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Prossimo lotto = 0.06999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Prossimo lotto = 0.069999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.06000000 0.01 6.00 Prossimo lotto = 0.06999999999999999 Come 0.06000000 + 0,01 diventa 0,0699999999999999999
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0,05000000 0,01 5..00 Prossimo lotto = 0.06
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.04000000 0.01 4.00 Prossimo lotto = 0.05
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.03000000 0.01 3.00 Prossimo lotto = 0.04
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.02000000 0.01 2.00 Prossimo lotto = 0.03
2020.01.05 17:09:28.798 Testert EURUSD,H1: 0.01000000 0.01 1.00 Prossimo lotto = 0.02


Perché usare la funzione MathFloor (restituisce il valore intero più vicino dal basso) per i numeri frazionari (doppi)?
 
Nikolai Semko:

Questa domanda arriva sempre.

figo! vai a fare il sonnambulo su internet, ma puoi rispondere alla domanda "dove è andata l'ultima iterazione"? ;) in questo esempio:

void OnStart()
{
   for(double x = 10.0; x <= 20.0; x += 0.1) {
      printf("x = %10.60f", x);
      Sleep(111);
   }
}

2020.01.06 01:26:11.016 tst_double (EURUSD,H1) x = 10.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.

2020.01.06 01:26:11.127 tst_double (EURUSD,H1) x = 10.099999999999999996447286321199949907064437866210937500000000000

2020.01.06 01:26:11.239 tst_double (EURUSD,H1) x = 10.19999999999999999289457264239899814128875732421875000000000000

2020.01.06 01:26:11.350 tst_double (EURUSD,H1) x = 10.29999999999999893418589635984972119331359863281250000000000000

2020.01.06 01:26:11.462 tst_double (EURUSD,H1) x = 10.3999999999999999859789145284797996282577514648437500000000000

2020.01.06 01:26:11.574 tst_double (EURUSD,H1) x = 10.49999999999999998223643160599749535322189331054687500000000000

2020.01.06 01:26:11.686 tst_double (EURUSD,H1) x = 10.599999999999999978968371792719699442386627197265625000000000000

2020.01.06 01:26:11.798 tst_double (EURUSD,H1) x = 10.6999999999999999997597513100424839649349451065063476562500000000000

2020.01.06 01:26:11.910 tst_double (EURUSD,H1) x = 10.7999999999999999715999715782905695952565155029296875000000000000

2020.01.06 01:26:12.022 tst_double (EURUSD,H1) x = 10.8999999999999999699808025579079549163579940795898437500000000000

2020.01.06 01:26:12.134 tst_double (EURUSD,H1) x = 10.9999999999999996447286321199499070644378662109375000000000000

2020.01.06 01:26:12.246 tst_double (EURUSD,H1) x = 11.099999999999996092019495331944897770881652832031250000000000000

2020.01.06 01:26:12.358 tst_double (EURUSD,H1) x = 11.1999999999999999995957954355678543939888477325439453125000000000

2020.01.06 01:26:12.470 tst_double (EURUSD,H1) x = 11.2999999999999999995381472217559348791837692260742187500000000000

2020.01.06 01:26:12.582 tst_double (EURUSD,H1) x = 11.399999999999999950950262008496792986989021301269531250000000000

2020.01.06 01:26:12.695 tst_double (EURUSD,H1) x = 11.49999999999994670929481799248605966567993164062500000000000

2020.01.06 01:26:12.808 tst_double (EURUSD,H1) x = 11.599999999999999994315658113919198513031005859375000000000000000

2020.01.06 01:26:12.920 tst_double (EURUSD,H1) x = 11.69999999999999993993960386746039148420020044373725585937500000000000

2020.01.06 01:26:13.032 tst_double (EURUSD,H1) x = 11.7999999999999999993605115378151590983271598815917968975000000000000

2020.01.06 01:26:13.143 tst_double (EURUSD,H1) x = 11.8999999999999999329498440102790482342243194545800781250000000000000

2020.01.06 01:26:13.254 tst_double (EURUSD,H1) x = 11.9999999999999928945726423989981412887573242187500000000000

2020.01.06 01:26:13.367 tst_double (EURUSD,H1) x = 12.0999999999999999992539301274518948048353195190429687500000000000

2020.01.06 01:26:13.478 tst_double (EURUSD,H1) x = 12.199999999999999921840206638897955417633056640625000000000000

2020.01.06 01:26:13.590 tst_double (EURUSD,H1) x = 12.299999999999999999182828758538758847862482070922851562500000000000

2020.01.06 01:26:13.702 tst_double (EURUSD,H1) x = 12.39999999999999999147348717087879777795695465087890625000000000000

2020.01.06 01:26:13.813 tst_double (EURUSD,H1) x = 12.49999999999999991191118215802998747676610946655273437500000000000

2020.01.06 01:26:13.925 tst_double (EURUSD,H1) x = 12.5999999999999999990762944435118697583675384521484375000000000000

2020.01.06 01:26:14.037 tst_double (EURUSD,H1) x = 12.69999999999999090407673067238647490739822387695312500000000000

2020.01.06 01:26:14.149 tst_double (EURUSD,H1) x = 12.79999999999999990052401699358597397804260253906250000000000000

2020.01.06 01:26:14.261 tst_double (EURUSD,H1) x = 12.8999999999999898969713033147854747304848698120117187500000000000

2020.01.06 01:26:14.372 tst_double (EURUSD,H1) x = 12.99999999999893418589635984972119331359863281250000000000

2020.01.06 01:26:14.483 tst_double (EURUSD,H1) x = 13.09999999999999988988986587595718447118997573852539062500000000000

2020.01.06 01:26:14.596 tst_double (EURUSD,H1) x = 13.1999999999999998863131616227838393970260620117187500000000000000

2020.01.06 01:26:14.707 tst_double (EURUSD,H1) x = 13.2999999999999889276044859958346933126449584960937500000000000

2020.01.06 01:26:14.820 tst_double (EURUSD,H1) x = 13.399999999999999998792077349207829684019088745117187500000000

2020.01.06 01:26:14.932 tst_double (EURUSD,H1) x = 13.499999999999999875502124198246747255325317382812500000000000

2020.01.06 01:26:15.044 tst_double (EURUSD,H1) x = 13.5999999999999999987281023027563181966543197631835937500000000000

2020.01.06 01:26:15.157 tst_double (EURUSD,H1) x = 13.69999999999999986854959388438146561380104249804687500000000000

2020.01.06 01:26:15.270 tst_double (EURUSD,H1) x = 13.7999999999999999986499688020558096468448638916015625000000000000

2020.01.06 01:26:15.381 tst_double (EURUSD,H1) x = 13.8999999999999998614441665267804637551303076782226562500000000000

2020.01.06 01:26:15.493 tst_double (EURUSD,H1) x = 13.99999999999999985789178914528479762998257751464843750000000000

2020.01.06 01:26:15.604 tst_double (EURUSD,H1) x = 14.099999999999985985433873916917946189641952514648437500000000000

2020.01.06 01:26:15.717 tst_double (EURUSD,H1) x = 14.199999999999999850878602549037896096706390380859375000000000000

2020.01.06 01:26:15.828 tst_double (EURUSD,H1) x = 14.29999999999999984972333118115784600377070828247031250000000000000

2020.01.06 01:26:15.941 tst_double (EURUSD,H1) x = 14.3999999999999849984993680598132777959108352661132812500000000000

2020.01.06 01:26:16.054 tst_double (EURUSD,H1) x = 14.49999999999849984012788445397745817899703979492187500000000000

2020.01.06 01:26:16.167 tst_double (EURUSD,H1) x = 14.59999999999999983996575170775176957249641418457031250000000000

2020.01.06 01:26:16.280 tst_double (EURUSD,H1) x = 14.699999999999999998330224545709637645632028579711914062500000000000

2020.01.06 01:26:16.393 tst_double (EURUSD,H1) x = 14.7999999999999998294694743417575955390930175781250000000000000

2020.01.06 01:26:16.504 tst_double (EURUSD,H1) x = 14.899999999999999899825917092973877545446157455444335937500000000000

2020.01.06 01:26:16.615 tst_double (EURUSD,H1) x = 14.999999999999982236431605997495353221893310546875000000000000

2020.01.06 01:26:16.728 tst_double (EURUSD,H1) x = 15.099999999999999998188116023811744526028633117675781250000000000000

2020.01.06 01:26:16.841 tst_double (EURUSD,H1) x = 15.1999999999999898151525888870237395167350769090429687500000000000

2020.01.06 01:26:16.953 tst_double (EURUSD,H1) x = 15.29999999999999999811706175023573450744152069091796897500000000000

2020.01.06 01:26:17.066 tst_double (EURUSD,H1) x = 15.3999999999999999980815346134477294981479644775390625000000000000

2020.01.06 01:26:17.179 tst_double (EURUSD,H1) x = 15.4999999999999998080460074766597244888544082641601562500000000000

2020.01.06 01:26:17.290 tst_double (EURUSD,H1) x = 15.5999999999999998010480339871719479560852050781250000000000

2020.01.06 01:26:17.402 tst_double (EURUSD,H1) x = 15.6999999999999997979749749532030837144702672958374023437500000000000

2020.01.06 01:26:17.514 tst_double (EURUSD,H1) x = 15.799999999999999797939424260662957094609737396240234375000000000000

2020.01.06 01:26:17.627 tst_double (EURUSD,H1) x = 15.89999999999999999909389295077044516801834106445312500000000000

2020.01.06 01:26:17.740 tst_double (EURUSD,H1) x = 15.999999999999999783737179271961944238662719726562500000000000

2020.01.06 01:26:17.851 tst_double (EURUSD,H1) x = 16.09999999999998010480339871719479560852050507812500000000000000

2020.01.06 01:26:17.964 tst_double (EURUSD,H1) x = 16.1999999999999815998152588887023739516737350769090429687500000000000

2020.01.06 01:26:18.076 tst_double (EURUSD,H1) x = 16.299999999999898294694743417575955390930175781250000000000000

2020.01.06 01:26:18.189 tst_double (EURUSD,H1) x = 16.3999999999999998499849984368080598132777959108352661132812500000000000

2020.01.06 01:26:18.302 tst_double (EURUSD,H1) x = 16.4999999999999998599998578917891452847979962628257751464843750000000000

2020.01.06 01:26:18.414 tst_double (EURUSD,H1) x = 16.59999999999999987210230756318196654319763183593750000000000000

2020.01.06 01:26:18.526 tst_double (EURUSD,H1) x = 16.6999999999999998863131622783839702606201171875000000000000

2020.01.06 01:26:18.638 tst_double (EURUSD,H1) x = 16.79999999999999990052401699358597397804260253906250000000000000

2020.01.06 01:26:18.750 tst_double (EURUSD,H1) x = 16.899999999999999991473487170879777795695465087890625000000000000

2020.01.06 01:26:18.861 tst_double (EURUSD,H1) x = 16.9999999999999928945972642398998141288757324218750000000000000

2020.01.06 01:26:18.973 tst_double (EURUSD,H1) x = 17.09999999999999999915658113919198513031005859375000000000000000

2020.01.06 01:26:19.085 tst_double (EURUSD,H1) x = 17.1999999999999999995739579543585439398884773254394531250000000000000

2020.01.06 01:26:19.197 tst_double (EURUSD,H1) x = 17.299999999999999999715782905695959925651550292968750000000000

2020.01.06 01:26:19.309 tst_double (EURUSD,H1) x = 17.3999999999999999859789145284797996282577514648437500000000000

2020.01.06 01:26:19.420 tst_double (EURUSD,H1) x = 17.50000000000000000000000000000000000000000000000000000000000000000000

2020.01.06 01:26:19.532 tst_double (EURUSD,H1) x = 17.6000000000142108547152020037371742248535156250000000000000

2020.01.06 01:26:19.644 tst_double (EURUSD,H1) x = 17.700000000000002842170943030404007434344497070312500000000000000

2020.01.06 01:26:19.757 tst_double (EURUSD,H1) x = 17.8000000000000042636325641456060111522674560546875000000000

2020.01.06 01:26:19.870 tst_double (EURUSD,H1) x = 17.900000000056843418860808014869689941406250000000000000000000

2020.01.06 01:26:19.982 tst_double (EURUSD,H1) x = 18.00000000007105427357601001858711242675781250000000000000

2020.01.06 01:26:20.093 tst_double (EURUSD,H1) x = 18.10000000000000852651282912120223045349121093750000000000

2020.01.06 01:26:20.205 tst_double (EURUSD,H1) x = 18.20000000000000994759830064140260219573974609375000000000

2020.01.06 01:26:20.316 tst_double (EURUSD,H1) x = 18.3000000000011368683772161602973937988281250000000000000000

2020.01.06 01:26:20.429 tst_double (EURUSD,H1) x = 18.400000000001278976924368180334568023681640625000000000000000

2020.01.06 01:26:20.542 tst_double (EURUSD,H1) x = 18.50000001421085471520200373717422485351562500000000000000

2020.01.06 01:26:20.653 tst_double (EURUSD,H1) x = 18.600000000001563194018672220204089164733886718750000000000000

2020.01.06 01:26:20.764 tst_double (EURUSD,H1) x = 18.70000000017053052565824240446090698242187500000000000

2020.01.06 01:26:20.877 tst_double (EURUSD,H1) x = 18.8000000184741111297626260483264923095703125000000000

2020.01.06 01:26:20.989 tst_double (EURUSD,H1) x = 18.9000000000019895196601282805204391479492187500000000000000

2020.01.06 01:26:21.101 tst_double (EURUSD,H1) x = 19.0000000000000213161628207280300300557613372802734375000000000

2020.01.06 01:26:21.213 tst_double (EURUSD,H1) x = 19.10000000000227373675443232059478977597656250000000000000000000

2020.01.06 01:26:21.326 tst_double (EURUSD,H1) x = 19.200000000241584530158434063196182222509765625000000000

2020.01.06 01:26:21.438 tst_double (EURUSD,H1) x = 19.30000000000255795384873636096691360473632812500000000000000

2020.01.06 01:26:21.551 tst_double (EURUSD,H1) x = 19.40000000000002762395888380706310272216796875000000000

2020.01.06 01:26:21.664 tst_double (EURUSD,H1) x = 19.500000000002842170943030404007434344497070312500000000000

2020.01.06 01:26:21.776 tst_double (EURUSD,H1) x = 19.60000000000298427949019242078065872192382828125000000000

2020.01.06 01:26:21.887 tst_double (EURUSD,H1) x = 19.700000000000031212638680803734444081783294677343750000000000

2020.01.06 01:26:22.000 tst_double (EURUSD,H1) x = 19.800000000003268494984496460855007171630859375000000000

2020.01.06 01:26:22.112 tst_double (EURUSD,H1) x = 19.900000000341060513164848089218139648437500000000000000



In tutta serietà, voglio capire e spiegare dove è andato il 20.0?

 
Igor Makanu:

figo! vai a fare il sonnambulo su internet, ma puoi rispondere alla domanda "dove è andata l'ultima iterazione"? ;) in questo esempio:

in tutta serietà, voglio capire e spiegare dove è andato il 20.0?

Beh, è abbastanza semplice:

0,1 nel tipo doppio è davvero 0,100000000000000000055511151231257827021181583404541015625, cioè più di 0,1

quindi? all'ultimo controllo sarà già più di 20, più precisamente 10+100*0.10000000000000000000000000055511151231257827021181583404541015625 ~ 20.00000000000000000000555111512312578

e il ciclo finisce

e se facciamo questo esperimento

void OnStart() {
   for(double x = 0.0; x <= 1.0; x += 0.01) {
      printf("x = %10.60f", x);
   }
}

poi il risultato dell'ultima iterazione:

2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.970000000000000639488462184090167284011840820312500000000000
2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.980000000000000648370246381091419607400894165039062500000000
2020.01.05 16:51:40.480 TestDouble (EURUSD,M1)  x = 0.990000000000000657252030578092671930789947509765625000000000

Ma se cambiamo double in float, il risultato sarà:

2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.979999363422393798828125000000000000000000000000000000000000
2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.989999353885650634765625000000000000000000000000000000000000
2020.01.05 16:53:06.926 TestDouble (EURUSD,M1)  x = 0.999999344348907470703125000000000000000000000000000000000000

perché 0,01 per il doppio è maggiore di 0,01, e per il float è minore di

 
Nikolai Semko:

È così semplice:

0,1 nel tipo double è davvero 0,10000000000000000005511151231257827021181583404541015625, che è più grande di 0,1

Quindi, all'ultimo controllo sarà già più di 20, più precisamente 10+100*0.10000000000000000000000000055511151231257827021181583404541015625 ~ 20.000000000000000000000555111512312578

e il ciclo finisce

Ok, ho capito.

sì, il ciclo for() itera e confronta la condizione, il problema è risolto

potete mostrare questo codice come esempio:

void OnStart()
{
   for(int x = 10; x <= 20; x += 1) {
      printf("x = %10.60f", x);
      Sleep(111);
   }
}

2020.01.06 01:48:50.513 tst_double (EURUSD,H1) x = 10.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.

2020.01.06 01:48:51.767 tst_double (EURUSD,H1) x = 20.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.


come previsto, il ciclo è stato terminato quando ha raggiunto 20

 
Nikolai Semko:

È una domanda che si pone continuamente.
Tutti parlano sempre dell' IEEE Standard 754, ma spesso quando la gente va su wikipedia - o per complessità, o per pigrizia, se ne va senza capire il significato dello standard.

Dedicherò un po' di tempo per cercare di spiegare questa norma nel modo più breve possibile e con parole semplici, per poter fare riferimento a questo post in futuro.

Vi ringrazio, dal profondo del mio cuore! Grazie!

Questo messaggio può essere riferito non solo come il funzionamento dei numeri doppi, ma anche come un esempio, una risposta competente e comprensibile per l'utente, senza inviare googling.

 
Igor Makanu:

Quindi stai suggerendo che quelli che postano sul Mercato dovrebbero essere ignorati? Non sono sicuro di volerlo fare, c'era una domanda, c'era una discussione, penso che sia una situazione normale

PS:

su questo .... provare a ristampare il doppio tramite printf(), ho il sospetto che ci sarà un sacco di "quante meravigliose scoperte ci prepara lo spirito dell'illuminazione..."

;)

Non ho suggerito niente e non ho chiamato nessuno a niente. Penso solo che dovresti leggere più spesso sul forum, non solo quello che tu stesso hai scritto, ma anche quello che hanno scritto gli altri. Soprattutto se alcuni dei veri inesperti fanno domande. Perché è in queste domande e risposte possono imparare molto per se stessi. Puoi anche trovare una risposta alla domanda che non ti era nemmeno venuta in mente. Su questo standard IEEE 754 personalmente ho imparatomolto prima, solo leggendo le domande dei principianti. Veri principianti... Questo era il messaggio indirizzato a Vladimir in risposta a te.

 
Alexey Viktorov:

Non ho suggerito niente e non ho chiamato nessuno a niente. Penso solo che dovresti leggere più spesso sul forum, non solo quello che tu stesso hai scritto, ma anche quello che hanno scritto gli altri. Soprattutto se alcuni dei veri inesperti fanno domande. Perché è in queste domande e risposte possono imparare molto per se stessi. Puoi anche trovare una risposta alla domanda che non ti era nemmeno venuta in mente. Su questo standard IEEE 754 personalmente ho imparatomolto prima, solo leggendo le domande dei principianti. Veri principianti... Questo era il messaggio indirizzato a Vladimir in risposta a te.

Aggiungerò i miei 5 centesimi. Tutto è IMHO. È molto strano fare più di un anno di programmazione e non studiare la base, mentre la matematica dei numeri in virgola mobile è esattamente la base. Quindi, solo i bacini e gli standard salveranno i padri della democrazia russa (e non solo). Fumateli premurosamente.
 
Vladimir Pastushak:

Vi ringrazio, dal profondo del mio cuore! Grazie!

Potete fare riferimento a questo post non solo come il funzionamento dei numeri doppi, ma anche come un esempio, di una risposta competente e comprensibile a un utente, senza inviare googling.

Sei il benvenuto :)

 

Non cerco spesso i codici a freccia, ma sono incredibilmente difficili da trovare nella guida!

È una tabella con asterischi, cerchi, ecc.

E la ricerca restituisce tutto tranne quello giusto!