Jump to content
php.lv forumi

Recommended Posts

Posted

Pēkšni mans kods sācis taisīt mistiku: salīdzinot divus variabļus melo! (pirms tam viss bija ok)

Salīdzināts tiek ar '<'

Ja abi mainīgie vienādi - nostrādā kā true!

Uzliku ka abi mainīgie pirmstam tiek apstrādāti ar doublval(); - nepalīdz!

Kas par lietu???!

Posted (edited)

Parādi taču kodu, kas tā dara.

 

Un tu 100% pārliecinājies (izdrukājot mainīgo saturu pirms pašas salīdzināšanas), ka mainīgie ir vienādi ?

 

Hmm.. Cik noprotu, tu floatus mēģini salīdzināt ? Varbūt tālakais ko rakstīšu būs pilnīgas muļķības, bet ar floatiem ir tā, ka tie nav precīzi. Tāpēc iespējams, ka izdrukājot viņi ir vienādi, bet salīdzināšanas operātors tomēr vienu no viņiem redz savādāk (neprecīzi, piemēram, 3 vietā 3.00000000000000003 vai ko tādu).

Edited by andrisp
Posted
Parādi taču kodu, kas tā dara.

 

Un tu 100% pārliecinājies (izdrukājot mainīgo saturu pirms pašas salīdzināšanas), ka mainīgie ir vienādi ?

 

jap! pat izķēru abus maniīgos ar javascriptu tieši pirms salīdzināšanas!

Posted
Ieraksti kodu, kurā tas notiek. Ieskaitot tās vietas, kurās mainīgie dabū vērtības.

 

nu kāds tur kods!

ir mainīgais $a un mainīgais $b

$a tiek iegūts kā paramters, kas nodots no citas lapas

$b tiek iegūts no funkcijas

abi parametri tika apstrādāti:

$a = doubleval($a);

$b = doubleval($b);

 

salīdzināšana:

if ($a<$b) {}

Posted

Mēs tev neticam. Dators nemēdz melot. Tas dara precīzi to, ko tam liek darīt.

Parādi precīzas vērtības, kuras uzstādi un kā salīdzini.

Posted
Parādi taču kodu, kas tā dara.

 

Un tu 100% pārliecinājies (izdrukājot mainīgo saturu pirms pašas salīdzināšanas), ka mainīgie ir vienādi ?

 

Hmm.. Cik noprotu, tu floatus mēģini salīdzināt ? Varbūt tālakais ko rakstīšu būs pilnīgas muļķības, bet ar floatiem ir tā, ka tie nav precīzi. Tāpēc iespējams, ka izdrukājot viņi ir vienādi, bet salīdzināšanas operātors tomēr vienu no viņiem redz savādāk (neprecīzi, piemēram, 3 vietā 3.00000000000000003 vai ko tādu).

 

varbūtība itkā varētu pastāvēt, taču šoreiz tā nevare'tu būt:

$a tiek ievadīts inputfieldā un izskatās piem šādi 2.55

$b tiek iegūts no funkcijas kas pie vienas doubles pieskaita otru (piem $b = 2.45 + 0.1);

 

 

pats stulbākais ka tas kods nostrādāja 3 mēnešus, bet vakar sadirsās! (nav bijis pat PC restarts, vai tur tjip reg set maiņa)

Posted (edited)

Lūdzu nevajag taisīt bezjēdzīgas QUOTEs

 

vo bļins fakstakāds! Moš tad man tieši tos par stringiem pārtaisīt!

enīvei tas neizskaidro kapēc tas viss nostrādāja 3 mēnešus :)

bet paldies par virzienu! nu domāsim kā apčakarēt!

Edited by bubu
Posted

Varbūt vienkārši "pareizas" vērtības padevi. Tb tādas uz kurām paveicās un viss nostrādāja.

 

Par to apčakarēšanu - ja tu operē ar naudas summām, tad kā jau otrā topikā izteicās, dari to ar integer tipiem ar santīmiem (ja diapazons atļauj). Ar floatiem operēt ar naudu ir neprāts, tā nedrīkst.

Posted
Varbūt vienkārši "pareizas" vērtības padevi. Tb tādas uz kurām paveicās un viss nostrādāja.

arī tas tiesa! vakar jau pētīju - un tad jau skatījos ka tas nostrādāja tieši pie 2.55 < 2.45+0.1 :)

Posted

Pie 2.55 < 2.45+0.1 tas 100% nevar nostrādāt. Tur ir kāds cits gļuks. Floati nav tik neprecīzi. Tiem precizitāte parasti zūd pie 5 vai 6 zīmīgā cipara.

×
×
  • Create New...