Минус нула

17 отговора 0 прегледа
#1

Минус нула

Вчера застрелях 4 часа, за да търся бъг в кода, а се оказа че бъга е в компилатора. Значи в ПХП от някоя версия нататък ако умножиш "0" с примерно "-0.1" резултата е "-0". Което не е проблем, ако после събираш или умножаваш минуснулата с нещо - получават се правилни резултати. Обаче ако питаш ПХПто, тя по-малка ли е от нула, отговорът е ДА.

Не знаех, че този език е толкова напредничав, та е включил и алгебрични операции с монади и хиперреални числа. Еврейте мислят с 25 години напред, да знаете!

Някой брал ли е подобни ядове?

Отговор
в отговор на croesus #2

Re: Минус нула

къде ги видя тия "алгебрични операции с монади и хиперреални числа"



jeffty - най насраната Путка на форума
Отговор
в отговор на croesus #3

Re: Минус нула

И какво те изненадва в -0? Имаш бит за знак, ако нулираш другите битове - честито. Като не ги владееш тези неща с битовете, какво се пънеш да пишеш код зависещ от тях?

Отговор
в отговор на job.hunter-212123 #4

Re: Минус нула

Баце, глей си математиките, тая работа не е като оная работа!
п.с. Дори не можеш да вденеш 1/10 от проблема! Язе се сдържам да сипя на php, щото само на Java не съм намирал бъг в сметките. Не, че я хваля, просто факт, някой ден и това ще стане!

Цитат: Споделете тази страница Разкажете на всички. tiny.cc/mkc1ay

Редактирано от rabin на

Отговор
в отговор на rabin #5

Re: Минус нула

Имаше ли бъг с флоатинг пойнт, който забива джава?

а). Да, имаше
б). Не, некадърен съм и не знам такова нещо

Подсказка - и двата са верни, но по-верният отговор ебе

I have sold less books on sex than Stephen Hawking has on physics -- Madonna
Отговор
в отговор на evlampi_popdimitrov #6

Re: Минус нула

Връй си гукай с Минго, оно пак си търси кво да е, само пулс да има!
Ней се бутай в таа тема!

Цитат: Споделете тази страница Разкажете на всички. tiny.cc/mkc1ay
Отговор
в отговор на croesus #7

Re: Минус нула

Много стар проблем, във всички езици го има при float типовете. В случая числото ти реално е нещо от сорта на -0.0000001 примерно. Затова има разни decimal типове за да се избегнат тия паразитни цифри в двоичния вид на числото. Не знам как е в пхп напоследък, отдавна не съм пипвал такова нещо, ама няма ли някакво указване на типове някъде или някакви конфигурации с която да избегнеш тази досада.

Отговор
в отговор на rabin #8

Re: Минус нула

Симпатяга, нали се сещаш, че покрай шарените пирамидки съм доста по-в час от тебе И по тая тема.

Сладур

I have sold less books on sex than Stephen Hawking has on physics -- Madonna
Отговор
в отговор на bobyb #9

Re: Минус нула

децимал май немаше там.

Колко акции шортна през празния си животец, на колко командировки отиде?
Отговор
в отговор на chupac #10

Re: Минус нула

Еми тогава ще си прави сравнения с точност навсякъде да му дойде акъла в главата.

Отговор
в отговор на bobyb #11

Re: Минус нула

или че дигне един джава ап сървър на някоя евтина железарийка и че прави сметките там, по хтмл/аякс протокол.

Колко акции шортна през празния си животец, на колко командировки отиде?
Отговор
в отговор на chupac #12

Re: Минус нула

джавичка на линуксче, класика.

Отговор
в отговор на bobyb #13

Re: Минус нула

моя грешка - по хтмл протокол, с аякс полета.

Колко акции шортна през празния си животец, на колко командировки отиде?
Отговор
в отговор на bobyb #14

Re: Минус нула

Това с типовете ми мина първо през главата, но в моя случай не става, защото са ми нужни точно флоутове. Четох, че проблемът е пренесен от C, защото проф. Сураски му е голям фен и не си е дал зор да прави нещо различно в ПХП. Смешното е, че кастване към флоут пак връща "-0".
В ПХП всичко се конфигурира, има умници, които са написали библиотеки, където обръщат всичко в unsigned int и смед сметките, връщат обратно във флоут. Не си струва обаче за такава дреболия да ги ползвам. В моя случай аритметиката е ограничена до 4 функции и просто в четирите сложих по една допълнителна проверка.

Отговор
в отговор на croesus #15

Re: Минус нула

не знам дали е до езика, предполагам каквото каже процесора, това е




NE SUTOR ULTRA CREPIDAM
Отговор
в отговор на federer #16

Re: Минус нула

Ами минус нула - плюс нула. "1/0" дава "INF", "1/-0" - "-INF". Хиперреални числа, няма майтап.

Ако показваше -0.0000000000000000001 щях да съм по-спокоен, но за "удобство" са го закръглили на "-0".

Отговор
в отговор на zaphod #17

Re: Минус нула

Според IEEE 754 -0 == +0 и x86 процесорите го спазват това.
Може да сравняваш побайтово - може пък да е по-бързо в някои случаи, тогава няма да излезе. Вероятно е допустимо при fast math опция.

Отговор
в отговор на klapaucius #18

Re: Минус нула

аз съм го пробвал и е така, но не съм пробвал за <, винаги съм смятал че <>== са гарантирано несъвпадащи




NE SUTOR ULTRA CREPIDAM
Отговор