d_01 Posted August 9, 2010 Report Share Posted August 9, 2010 Kapēc saskaitot šos rodas 8.1000000000004 ? echo 2562.3 - 2554.2; // = 8.1000000000004 Link to comment Share on other sites More sharing options...
rATRIJS Posted August 9, 2010 Report Share Posted August 9, 2010 Taa nav saskaitiishana - taa ir atnjemshana. decimaalskaitlji datoros nav 100% "uzticami". IMO tev pietiks ar round izmantoshanu. Link to comment Share on other sites More sharing options...
d_01 Posted August 9, 2010 Author Report Share Posted August 9, 2010 (edited) Atņemšana arī ir saskaitīšana, tikai ar negatīvu skaitli. Kas ir IMO? Man ir nepieciešama precizitāte 0.6f Es saprotu to, ka noapaļojot šo rezultātu (8.1000000000004) kaut vai līdz 8cip aiz komata rezultāts būs pareizs. Bet negribētos uzticēties uz šo vienu gadījumu, ka viss būs ok vienkārši taisot round($a) * 10^X, atņemt un tad / 10^X. Jautājums ir sekojošs. Kā lai pasaka php lai viņš izmantojot savus resursus papūlētos izrēķināt šo pareizi? Edited August 9, 2010 by d_01 Link to comment Share on other sites More sharing options...
briedis Posted August 9, 2010 Report Share Posted August 9, 2010 Tā nu tas ir ar float skaitļiem... Meklē kādu php matemātikas bibliotēku... Link to comment Share on other sites More sharing options...
d_01 Posted August 9, 2010 Author Report Share Posted August 9, 2010 Kā jums šķiet, .ini failā norādot precizitāti var ko labot? Link to comment Share on other sites More sharing options...
briedis Posted August 9, 2010 Report Share Posted August 9, 2010 Tak palasi manuāli: http://php.net/manual/en/language.types.float.php Link to comment Share on other sites More sharing options...
Леший Posted August 9, 2010 Report Share Posted August 9, 2010 Kā lai pasaka php lai viņš izmantojot savus resursus papūlētos izrēķināt šo pareizi? Ja tev izdosies pateikt, lai PHP neizmanto iebūvētu matemātisko procesoru, tad moš izdosies. Kļūda rodās dēļ tā, ka dators glabā float datus binārā formātā, veidā 1.xxxxxxx*2^nnn. Mēs izmantojām decimālo sistēmu, dators - bināro, tur tā precizitāte arī pazūd. Pie tam, katru reizi, reķinot float, procesors konvertē no single vai double float uz tenbyte, un pēc reķināšanas atpakaļ. Link to comment Share on other sites More sharing options...
d_01 Posted August 9, 2010 Author Report Share Posted August 9, 2010 jap. Tnx. Šis laikam ir tas kas man ir vajadzīgs: So never trust floating number results to the last digit, and never compare floating point numbers for equality. Link to comment Share on other sites More sharing options...
bubu Posted August 9, 2010 Report Share Posted August 9, 2010 Obligātā lasāmviela (teorija): http://docs.sun.com/source/806-3568/ncg_goldberg.html Nedaudz no praktiskāka aspekta: http://www.cs.berkeley.edu/~wkahan/Mindless.pdf Un likums precīzus lielumus (naudu, objektu izmēru, pirkumu svaru) nekad, nekad neglabāt floating-point skaitļos. Link to comment Share on other sites More sharing options...
Recommended Posts