Math.IEEERemainder (x, y) ve x% y arasında herhangi bir fark var mı?Math.IEEERemainder (x, y), x% y'ye eşdeğer midir?
13
A
cevap
12
Hayır, eşdeğer değildir:
İşte kaynağıdır. MSDN IEEERemainder modülo ve kullanılan farklı formüller gösterir ve farklılıkları gösteren kısa bir örnek program var (MSDN'den alınmıştır)
IEEERemainder = dividend - (divisor * Math.Round(dividend/divisor))
Modulus = (Math.Abs(dividend) - (Math.Abs(divisor) *
(Math.Floor(Math.Abs(dividend)/Math.Abs(divisor))))) *
Math.Sign(dividend)
farklı/özdeş çıktı olan bazı örnekler:
IEEERemainder Modulus
3/2 = -1 1
4/2 = 0 0
10/3 = 1 1
11/3 = -1 2
27/4 = -1 3
28/5 = -2 3
17.8/4 = 1.8 1.8
17.8/4.1 = 1.4 1.4
-16.3/4.1 = 0.0999999999999979 -4
17.8/-4.1 = 1.4 1.4
-17.8/-4.1 = -1.4 -1.4
Benzer bir soruya da bu iyi answer'u sixlettervariables bakın.
2
Hayır, aynı değiller; documentation'a bakın.
public static double IEEERemainder(double x, double y) {
double regularMod = x % y;
if (Double.IsNaN(regularMod)) {
return Double.NaN;
}
if (regularMod == 0) {
if (Double.IsNegative(x)) {
return Double.NegativeZero;
}
}
double alternativeResult;
alternativeResult = regularMod - (Math.Abs(y) * Math.Sign(x));
if (Math.Abs(alternativeResult) == Math.Abs(regularMod)) {
double divisionResult = x/y;
double roundedResult = Math.Round(divisionResult);
if (Math.Abs(roundedResult) > Math.Abs(divisionResult)) {
return alternativeResult;
}
else {
return regularMod;
}
}
if (Math.Abs(alternativeResult) < Math.Abs(regularMod)) {
return alternativeResult;
}
else {
return regularMod;
}
}
İlgili konular
- 1. Ruby tuhaflığı: x == y && [x, y] .uniq == [x, y]
- 2. pythonic swap x, y = y, x çalışmıyor?
- 3. Yuvarlama y = x * x en yakın
- 4. GetDIBits ve X, Y
- 5. nerede id = (y x)
- 6. LayoutParams hareket x ve y
- 7. Sayfa X/Y, LaTeX Altbilgisinde
- 8. Pandalar basit X Y arsa
- 9. X Y uzanır halde bir sınıf "Y" için bir sınıf "X" dökme olmaz mı?
- 10. Bir python sözlüğünde bir tuple eşleme (x, y) veya (y, x)
- 11. X/Y öznitelikleri olmayan bir SVG öğesinin (yol vb.) X/y koordinatlarını nasıl alabilirim?
- 12. çizme kapalı fonksiyon x + y - log (x) - (y) log -2 = 0 MATLAB
- 13. [x, y, z] .join ('') dizeler için x + y + z 'den gerçekten daha hızlı mı?
- 14. Raylar 2.3.x eşdeğer Raylar 3'te
- 15. php X devam - C# eşdeğer php
- 16. CSS: taşma-y: kaydırma; taşma-x: görünür
- 17. css background-repeat x ve y
- 18. Görüntüyü php'de X, Y, Genişlik ve Yükseklik
- 19. Belirtilen bağımlılık X idi ama Y
- 20. UILabel'in x ve y değerini aldınız mı?
- 21. WPF Canvas öğesinin X Y koordinatlarına bağlanma
- 22. CSS taşma-y: görünür, taşma-x: kaydırma
- 23. EditText'te imleç konumu (x, y) nasıl alınır
- 24. levelplot'ta farklı x & y etiketi nasıl ayarlanır?
- 25. Python kullanarak x, y koordinatları nasıl alınır?
- 26. Konsol uygulamaları için Java gotoxy (x, y)
- 27. X Y hareketinin dönüş açısına göre hesaplanması?
- 28. Bileşenleri rastgele (x, y) koordinatlarına yerleştirin
- 29. Kabuk: satırları x - y satırına getir
- 30. Dize Özeti X ve Y Koordinatları Dize
Sadece merak ediyorum - Neden bu sonuçları isterim? 11/3 = -1? Burada açıkça modül 2'dir. Fakat hangi senaryolarda '-1' istiyorum? –
@RoyiNamir Burada bir cevabınız var: http://stackoverflow.com/a/27378075/200443 – Maxence