«floating-point» etiketlenmiş sorular

Kayan nokta sayıları, tamsayılardan daha büyük aralıkları temsil edebilen, ancak daha düşük kesinlik pahasına aynı miktarda bellek kullanan gerçek sayıların yaklaşıklarıdır. Sorunuz küçük aritmetik hatalar (örn. Neden 0.2 + 0.1, 0.300000001'e eşittir?) Veya ondalık dönüştürme hatalarıyla ilgili ise, göndermeden önce lütfen aşağıda verilen "bilgi" sayfasını okuyun.



1
Bir ikiliyi 32 bit int'e yuvarlamanın hızlı bir yöntemi açıklandı
Lua'nın kaynak kodunu okurken, Lua'nın a'yı 32-bit'e macroyuvarlamak için kullandığını fark ettim . Çıkardım ve şöyle görünüyor:doubleintmacro union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; u.d = (d) + 6755399441055744.0; \ (i) = (t)u.i[ENDIANLOC];} İşte ENDIANLOColarak tanımlanır endian , 0küçük endian için 1büyük …




5
Python Pandas Toplama Sonuçlarından Bilimsel Gösterimi Biçimlendir / Gizle
Pandalar çok büyük sayılar için bilimsel gösterim üreten bir groupby işleminden çıkış biçimini nasıl değiştirebilir? Python dize biçimlendirme yapmak biliyorum ama burada uygulamak söz konusu olduğunda ben bir kayıp. df1.groupby('dept')['data1'].sum() dept value1 1.192433e+08 value2 1.293066e+08 value3 1.077142e+08 Bu, dize dönüştürürsem bilimsel gösterimi bastırır, ancak şimdi sadece dize biçimini ve ondalık …

4
Python 3'te kayan nokta değeri 4 * 0,1 neden güzel görünüyor, ancak 3 * 0,1 değil?
Ondalık sayıların çoğunun tam bir kayan nokta temsili olmadığını biliyorum ( Kayan nokta matematik bozuk mu? ). Ama neden her iki değerin gerçekten çirkin ondalık temsili olduğunda 4*0.1güzel yazdırıldığını görmüyorum 0.4, ama 3*0.1değil: >>> 3*0.1 0.30000000000000004 >>> 4*0.1 0.4 >>> from decimal import Decimal >>> Decimal(3*0.1) Decimal('0.3000000000000000444089209850062616169452667236328125') >>> Decimal(4*0.1) Decimal('0.40000000000000002220446049250313080847263336181640625')

6
Neden Double.MIN_VALUE negatif değil?
Herkes neden Double.MIN_VALUEDoubles'ın alabileceği minimum değer olmadığına biraz ışık tutabilir mi? Pozitif bir değerdir ve bir Double elbette negatif olabilir. Bunun neden yararlı bir sayı olduğunu anlıyorum, ancak özellikle karşılaştırıldığında çok sezgisel bir isim gibi görünüyor Integer.MIN_VALUE. Bunu Double.SMALLEST_POSITIVEveya MIN_INCREMENTbenzerlerini çağırmak daha açık bir anlambilime sahip olacaktır. Ayrıca, Çiftlerin alabileceği …

16
Php şamandıralar karşılaştırın
Bu örnek kodda olduğu gibi PHP'de iki şamandıra karşılaştırmak istiyorum: $a = 0.17; $b = 1 - 0.83; //0.17 if($a == $b ){ echo 'a and b are same'; } else { echo 'a and b are not same'; } Bu kodda bunun sonucunu döndürür elsedurumun yerine ifrağmen, durumun $ave …


9
Double.NaN == Double.NaN neden yanlış döndürüyor?
Sadece OCPJP sorularını inceliyordum ve şu garip kodu buldum: public static void main(String a[]) { System.out.println(Double.NaN==Double.NaN); System.out.println(Double.NaN!=Double.NaN); } Kodu çalıştırdığımda, var: false true falseBirbirine aynı görünen iki şeyi karşılaştırdığımızda çıktı nasıl ? Ne anlama NaNgeliyor?
155 java  floating-point  nan  scjp  ocpjp 

10
Kayan noktalı matematik C # 'da tutarlı mı? Olabilir mi?
Hayır, bu başka bir "Neden (1 / 3.0) * 3! = 1" sorusu değil. Son zamanlarda kayan noktalar hakkında çok şey okudum; özellikle, aynı hesaplamanın farklı mimarilerde veya optimizasyon ayarlarında nasıl farklı sonuçlar verebileceği . Bu, tekrarları depolayan veya eşler arası ağa bağlı (sunucu-istemcinin aksine) video oyunları için bir sorundur …

7
'float' ve 'double' hassasiyeti
Kod float x = 3.141592653589793238; double z = 3.141592653589793238; printf("x=%f\n", x); printf("z=%f\n", z); printf("x=%20.18f\n", x); printf("z=%20.18f\n", z); çıktı verecek x=3.141593 z=3.141593 x=3.141592741012573242 z=3.141592653589793116 üçüncü çıktı hattında 741012573242çöp ve dördüncü satırda 116çöp. Çiftlerde her zaman 16 önemli rakam var mı, şamandıralarda her zaman 7 önemli rakam var mı? Neden çiftlerin 14 …
155 c  floating-point 

3
0,1 kat eklemek neden kayıpsız kalır?
0.1Ondalık sayının sonlu bir ikili sayı ile tam olarak temsil edilemeyeceğini biliyorum ( açıklama ), bu yüzden double n = 0.1biraz hassasiyet kaybedecek ve tam olarak olmayacak 0.1. Öte yandan 0.5tam olarak olduğu için temsil edilebilir 0.5 = 1/2 = 0.1b. 0.1 Üç kez eklemenin tam olarak 0.3aşağıdaki kodun yazdırılmasının …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.