首先先說下計算機記憶體里的存盤:
記憶體中最小的單位 位/位元(bit) 二進制數序列中的一個0或一個1就是一個位元,在電腦中,一個位元對應著一個晶體管,
二進制即常說的0和1兩個數碼來表示的數 基數為2,進位規則是 “逢二進一”
十進制數則用0、1、2、3.........9 , 這十個數來表示,十進制(計du數法)是以10為基礎數字系統,進位規則是 “滿十進一”
Java中基本資料型別:四類八種:

double float屬于浮點資料型別 然而在實際的開發中會發現有誤差
public class TestDemo {
public static void main(String args[]){
double a=2.9;
float f=2.4f;
System.out.print("計算結果:");
System.out.println(a-f);
}
}

計算的結果怎么和預想的不一樣啊 (嗯,,,腦殼疼)
從計算機的存盤原理解釋浮點數為何會產生誤差:
都知道計算機內部是以二進制進行存盤的,因此十進制的有限位的小數在進來之后,會在計算機內部會顯示是一個無限位的小數,
Ps:十進制2.9轉換為二進制10.1110011001100..................1100無限回圈
: 
Ps:計算機保存浮點數的精度有限,例如float可以保留十進制最多7位(二進制23位)有效數字,
double可以保留十進制15-16位(二進制52位)有效數字,那有效數字以后的位就被忽略了,
所以現在清楚浮點資料存盤是如何產生誤差的了吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165856.html
標籤:java
