ColdFusion'da matematik işlemleri neden kayan nokta matematik sorunlarından etkilenmiyor? equivlant Java kodu iki çift eklerken "beklemek d neyi üretir AncakColdFusion'da neden 0,06 + 0,01 = 0,07 oluyor?
result = 0.06 + 0.01;
writedump(result);
writedump(result.getClass().getName());
0,07
java.lang.Double
verir: kodunu alın :
public static void main(String[] args) {
double a = 0.01d;
double b = 0.06d;
System.out.println(a + b); //0.06999999999999999
}
Bu, ColdFusion'dan yüzen matematiğin gerçekleri nedeniyle görmeyi beklediğim şeydir (http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html).
ColdFusion sahnelerin ardında "büyü" yapar mı yoksa izole bir anormalliğe mi bakıyorum?
Her şey google, CF hakkında özel bir şey olmadığını ve beklediğiniz sonuçları ürettiğini söylüyor (ve insanlar neden soruyorlar, çünkü onlar neden kayan nokta kesinliğini anlamadılar). CF kodunuzda başka hiçbir şey olmadığından emin misiniz? –
Evet, bu parçacık öyle. Ne olacağını görmek için en basit senaryoları yarattım. Bu kodu bir adım daha ileri götürüp "a = 0.01; b = 0.06; writedump (a.getClass(). getName(); 'Bir String alıyorum.Gerçek olarak sahnelerin arkasından ima edilen bir dönüşüm var. – bittersweetryan
CF, çoğu değeri başlangıçta dizge olarak kaydediyor. vsetera) '+ 'gibi bir matematiksel operatör uygulandığında olduğu gibi: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7fc3.html – Leigh