Page 1 of 1

CB-bugi, potenssit

Posted: Sun Aug 17, 2008 2:05 pm
by mza
Taas täällä, pitkästä aikaa. :)

Code: Select all

Text 0,0,-(4.0)^1.1
DrawScreen
WaitKey
Tuloksena on NaN, koska (-4.0)^1.1 ei ole määritelty. Tämä on aiheuttanut lukuisia ongelmia, ehkä aiheettomia maveja jne projekteissani. Myös mielestäni loogisempaa olisi myös, että -4.0^1.1 tarkoittaisi samaa kuin -(4.0)^1.1. Jos Zeroa näkyy joskus, niin antakaahan tietoa eteenpäin.

Re: CB-bugi, potenssit

Posted: Sun Aug 17, 2008 2:20 pm
by Koodiapina
mza wrote:Jos Zeroa näkyy joskus
viewtopic.php?f=9&t=759&start=0 ;)

Re: CB-bugi, potenssit

Posted: Sun Aug 17, 2008 2:57 pm
by Dande
mza wrote:Taas täällä, pitkästä aikaa. :)

Code: Select all

Text 0,0,-(4.0)^1.1
DrawScreen
WaitKey
Tuloksena on NaN, koska (-4.0)^1.1 ei ole määritelty. Tämä on aiheuttanut lukuisia ongelmia, ehkä aiheettomia maveja jne projekteissani. Myös mielestäni loogisempaa olisi myös, että -4.0^1.1 tarkoittaisi samaa kuin -(4.0)^1.1. Jos Zeroa näkyy joskus, niin antakaahan tietoa eteenpäin.
En näe tuossa mitään bugia, sillä cb:ssä unaarinen - (eli siis negaatio) on toiseksi korkein suoritusprioriteetiltä (heti sulkeiden jälkeen) ja sen jälkeen tulee vasta potenssiin korotus. Joten mielestäni se on ihan oikein että -(4.0)^1.1 = -4.0^1.1 =NaN. Vai olisiko sinusta bugi, jos 3*2+1=7 sen sijasta että siitä tulisi 3*3=9 ;)
Tuollaisen lausekkeen saat laskettua siis -(4.0^1.1)

Re: CB-bugi, potenssit

Posted: Sun Aug 17, 2008 3:46 pm
by mza
Cb:n suoritusjärjestys taitaa sitten poiketa matematiikan perusjärjestyksestä tässä. Miinus pitäisi olla suluissa, jotta se lasketaan mukaan potenssiin, jos mennään matemaattisesti oikein. ;)

Re: CB-bugi, potenssit

Posted: Sun Aug 17, 2008 3:50 pm
by Dande
mza wrote:Cb:n suoritusjärjestys taitaa sitten poiketa matematiikan perusjärjestyksestä tässä. Miinus pitäisi olla suluissa, jotta se lasketaan mukaan potenssiin, jos mennään matemaattisesti oikein. ;)
Jokaisessa ohjelmointikielessä mennään ohjelmointikielen määritelmän sääntöjen mukaan, vaikka niiden mukaan pluslasku suoritettaisiin ennen kertolaskua. CB:n operaattoreiden prioriteetit löytyväy manuaalin kohdasta CoolBasic Ohjelmointikieli -> Laskutoimitukset