«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.


4
Bir şamandırayı yuvarlamadan dizeye dönüştürme
Açıklanması gerekmeyen nedenlerle, bir float'ın len () ile sayılacak bir dizgeye dönüştürülmesini gerektiren bir program yapıyorum. Bununla birlikte, str (float (x)), x'in bir dizeye dönüştürüldüğünde yuvarlanmasıyla sonuçlanır, bu da tüm şeyi atar. Bunun için bir düzeltme bilen var mı? Bilmek istiyorsanız, işte kullanılan kod: len(str(float(x)/3))


9
Bir dizgeyi Perl'de bir sayıya nasıl dönüştürebilirim?
İçinde ondalık bir değer tutan bir dizem var ve bu dizeyi bir kayan noktalı değişkene dönüştürmem gerekiyor. Dolayısıyla, sahip olduğum dizeye bir örnek "5.45" ve kayan nokta eşdeğeri istiyorum, böylece ona .1 ekleyebilirim. İnternette arama yaptım, ancak yalnızca bir dizeyi tam sayıya nasıl dönüştüreceğimi görüyorum.

3
Win32 üzerinde unsigned int'e çift çevrim 2,147,483,648'e düşüyor
Aşağıdaki kodu derlemek: double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } Çıkışlar (MSVC x86): …

8
JavaScript: Birkaç ondalık basamağa yuvarlayın, ancak fazladan sıfırları kaldırın
İşte senaryo: Ne .9999999999999999zaman almam gerektiğini anlıyorum 1.0. Ondalık kesinlik basamağını kaybetmeyi göze alabilirim, bu yüzden .toFixed(15)ne tür işler kullanıyorum. Yuvarlama işe yarıyor, ancak sorun bana verilmiş olması 1.000000000000000. Birkaç ondalık basamağa yuvarlamanın, ancak fazladan boşluk bırakmanın bir yolu var mı? Not: .toPrecisionistediğim şey değil; Sadece ondalık noktadan sonra kaç …


6
Java'da tamsayıyı float'a nasıl dönüştürebilirim?
İki tam sayım var xve y. Hesaplamam gerekiyor x/yve sonuç olarak float almak istiyorum. Örneğin bir sonucu olarak 3/21.5'e sahip olmak istiyorum. Ben en kolay (veya tek) yolu dönüştürmek yapmanın düşündük xve yşamandıra türü içine. Maalesef bunu yapmanın kolay bir yolunu bulamıyorum. Bana yardım eder misin lütfen?

2
Farkın makine hassasiyetinden daha küçük olup olmadığını kontrol etmenin doğru / standart yolu nedir?
Sıklıkla, elde edilen farkın makine hassasiyetinin üzerinde olup olmadığını kontrol etmek gerektiğinde ortaya çıkar. Bu amaçla Ar kullanışlı değişkeni için gibi görünüyor: .Machine$double.eps. Ancak bu değeri kullanma yönergeleri için R kaynak koduna döndüğümde birden çok farklı desen görüyorum. Örnekler statsKitaplıktan birkaç örnek : t.test.R if(stderr < 10 *.Machine$double.eps * abs(mx)) …

7
Float vs ondalık ne zaman kullanılır?
Bu API oluşturuyorum ve veritabanı aşağıdakilerden birini temsil eden değerleri depolar: yüzde ortalama oran Dürüst olmak gerekirse, aralıktaki sayıların% 0 ila 100 arasında olduğu bir şeyi nasıl temsil edeceğime dair hiçbir fikrim yok. Olmalı mı 0.00 - 1.00 0.00 - 100.00 bilmediğim başka bir alternatif Bunun için açık bir seçim …

1
Haskell'deki (^) garip davranışı
GHCi neden aşağıda yanlış cevap veriyor? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 GÜNCELLEME Haskell (^) fonksiyonunu aşağıdaki gibi uygularım. powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = powerXY (1/x) (-y) | otherwise …

5
Sıralı sayıların verimli istikrarlı toplamı
Kayan nokta pozitif sayılar ( std::vector<float>, boyut ~ 1000) oldukça uzun bir listem var . Sayılar azalan düzende sıralanır. Siparişi takip ederek onları toplarsam: for (auto v : vec) { sum += v; } Sanırım bazı sayısal kararlılık problemim olabilir, çünkü vektörün sonuna yakın sumolandan çok daha büyük olacak v. …

2
Değişken sabit için sözde yıkıcı çağırmanın geçerli sözdizimi
Aşağıdaki örnek programı düşünün. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Bu program tarafından derlenmektedir Microsoft Visual Studio Community 2019. Ama clangve gccbu gibi bir hata sorunu prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ İfadeyi böyle yazmak için ( 0.f …
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.