簡體   English   中英

Java中的精度損失

[英]Loss of precision in java

在Java中,所有整數文字均被視為int,而在Java中,浮點文字則被視為double。 那為什么

    byte b =10;

沒有給出任何錯誤,但是

   float f = 10.0;

在兩種情況下都進行向下轉換時,會導致精度誤差損失?

對於intbyte的情況,不必擔心精度損失,因為這兩種類型的粒度相同。 如果嘗試將值轉換為bytebyte 范圍之外的文字,則會出現錯誤。 (在這種情況下給出的錯誤消息會引起誤解。)

如果使用double float ,則可以有一個在正確范圍內的常數值,但仍然會失去精度 在10.0的特定情況下,該值可以完全用floatdouble ,但通常情況並非如此。

例如,考慮一下:

float f = (float) 10.1; // Or float f = 10.1f;
double d = 10.1;
System.out.println(f == d); // Prints false

這是因為在從doublefloat的轉換中精度下降了-兩種類型都不能精確表示10.1,但是doublefloat接近它。 ==運算符將意味着f轉換為double ,而d值不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM