benim başından bu kodu koymak() yöntemi: Bu çıktısını oluyorMathUtil.round() dosyasından hatalı sonuçlar alıyorum. Bu bilinen bir hata mı yoksa yanlış bir şey mi yapıyorum?
float dummy = -4.3219876F;
int rounded = MathUtil.round(dummy);
System.out.println("Float " + dummy + " rounded = " + rounded);
double dummy2 = -4.3219876;
long rounded2 = MathUtil.round(dummy2);
System.out.println("double " + dummy + " rounded = " + rounded2);
:
public static int round(float a) {
return (int)(a + 0.5f);
}
ise tamsayı kesme:
Float -4.3219876 rounded = -3
double -4.3219876 rounded = -3
yuvarlak yöntem şöyle matematikçinin yolu olarak tanımlandı (sayıya eşit veya daha büyük en büyük tamsayı) Sonra -3.8'in kesilmesi -4 olurdu ve bu iyi çalışıyordu. Ama bu şekilde tanımlanmadı. Bu yöntem böyle bir şey yazılmalıdır:
public static int round(float a) {
if (a < 0) {
return (int)(a - 0.5f);
} else {
return (int)(a + 0.5f);
}
}
Daha önce bir yazı yazdım (şimdi silindi), bu sorunun ortadan kalktığını, ancak yanılmışım. (MathUtil.round() yerine Math.round() kullandım çünkü gittim. MathUtil.round() kullandığımda, sorun hala var. – MiguelMunoz