為什麼Java中的float型最大值大於long型?
文章目錄
問題:float是32位,long是64位,為什麼float表示的範圍比long大呢?
原因:
原因是,float與long在記憶體中的儲存方式不一樣。
long在記憶體中直接用64為儲存:
long在記憶體中是用64為儲存,所以大小為-2^63 ~ 2^63-1。
然而float是用浮點數表示法表示的,如下:
float計算公式:(-1)s*M*2E 1
由於單精度的階碼E是8位,尾數M是23為,數符是1位
尾數M是一個定點小數,其表示如下:
計算方法為:
-[1-2-(n-1)]~+[1-2-(n-1)]
所以float的最大值為:(1-2-22)*2127 (127是28-1-1),這裡遠超263了,所以float的表示範圍大於long。這個就是為什麼寬化型別轉換時可以從long或int轉換為float的原因。下面這個不會報錯
參考
(N)R=(+/-) mn-1…m0.m1…m-k=(+/-)M*R(+/-)E,M為尾數,E為階,R為基數。 ↩︎
相關推薦
為什麼Java中的float型最大值大於long型?
文章目錄 問題:float是32位,long是64位,為什麼float表示的範圍比long大呢? 參考 問題:float是32位,long是64位,為什麼float表示的範圍比long大呢? 原因: 原因是,float與lo
Java中為什麼float型最大值大於long型?
最為一個常識,我們都知道浮點型在記憶體中佔用的是4個位元組的空間,而long型佔用的是8個位元組的空間。可是為什麼4個位元組的float型的最大值會大於long型的最大值呢? 我們都知道,float型別的範圍是:一3.403E38~3.403E38。而lo
java中陣列求最大值、最小值、平均值。
public class Array { public static void main(String arges[]) { int[] arr=new int[]{1,6,9,7,8,5,4,3,12,54,36,85,99}; int[] a=detarr(a
Java中Integer的最大值和最小值
Q1:誰能給解釋一下,這兩個常量為什麼會分別定義成0x80000000和0x7fffffff。 Q2:java.lang.String的最大長度是多少? Q3:如下程式碼能丟擲異常嗎?為什麼 int
#定義泛型類#分別求Integer和Double型陣列中元素的最大值,最小值,平均值
public class NumFunc<T extends Number> { T[]a; public NumFunc(T[]a){ super(); this.a=a; } private void so
Java程式設計基礎筆記 —— 如何獲取陣列中元素的最大值。
運算元組時,經常需要獲取陣列中元素的最值,下面來學習如何獲取陣列中元素的最大值。 public class GetMax { public static void main(Stri
JAVA 各種數值型別最大值和最小值 Int, short, char, long, float,&nbs
程式碼片段: byte bmax, bmin; short shmax, shmin; char cmax, cmin; int imax, imin; long lmax,lmin; float fmax,fmin; double dmax,dmin;
GA:利用GA對一元函數進行優化過程,求x∈(0,10)中y的最大值——Jason niu
title variable ati 過程 優化 mea ... http [] x = 0:0.01:10; y = x + 10*sin(5*x)+7*cos(4*x); figure plot(x, y) xlabel(‘independent variable
java三個取最大值、菜單新增修改、猜數字大小
com nbsp 大小 .com java img image ava 分享 java三個取最大值、菜單新增修改、猜數字大小
給定陣列a[0:n-1]試設計一個演算法,在最壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的最大值和最小值;教材2-15
給定陣列a[0:n-1]試設計一個演算法,在最壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的最大值和最小值; 解:要求對於陣列用小於【3n/2-2】的比較次數找到兩個最值 可以用陣列第一個元素來初始化max,min 然後遍歷陣列,分別和max,min比較,一遍就可以找
JAVA——計算陣列的最大值,最小值,陣列值的和,數組合並,陣列擷取
1,計算陣列的最大值 2,計算陣列的最小值 3,計算陣列和 4,合併陣列 5,擷取陣列 public class ArrayEvent{ //1,計算陣列中的最大值 public static int arrMax(int[] arr1){ if(arr1 == null){
JAVA輸入數值獲取最大值最小值平均值
本方法不使用排序、陣列,獲取輸入數中最大最小平均值,程式碼如下: public class GetMaxAndMin { public static void main(String[] args) { double input; Scanner sc
java語言求陣列最大值、最小值、總和,列印,翻轉、擷取等操作
//Java陣列章節練習題 public class ArrayUtils{ //1.計算陣列中最大值 public static int arrayMaxElement(int[] data){ int max=data[0];
java迴圈獲取陣列最大值和最小值,並且進行氣泡排序
import java.util.Scanner; public class Dxpaixu { /** * 陣列輸出最小值和最大值,並排序輸出 * @param args */ public
根據類Student的定義,建立五個該類的物件,輸出每個學生的資訊, 計算並輸出這五個學生Java語言成績的平均值,以及計算並輸出他們Java語言成績的最大值和最小值。
public class Test {public static void show() {Student s1 = new Student("張三", 1, "男", 20, 90);Student s2 = new Student("李思思", 2, "女", 22,
Java 基本資料型別最大值極限和最小值極限
想知道 Java 基本資料型別最大值極限和最小值極限,寫個小程式就很容易知道。 測試 Integer, Long, Float 和 Double 的最大值和最小值,程式碼如下: public
java中陣列的最大長度以及List的最大容量
java 中陣列的最大長度是多少呢?看一下它的length屬性就可以了。length屬性是32位的有符號整數,它的最大值是2的31次冪,就是2G。為何有這個限制呢?為什麼length的屬性不是long型呢?我們假設一下,如果它是long型的,那麼它的最大長度
java 基本資料型別最大值和最小值及各自的極限
測試 Integer, Long, Float 和 Double 的最大值和最小值,程式碼如下: public static void main(String[] args) { System.out.println("Integer.MIN_VALUE = " + In
C/C++如何得到int型最大值
在C/C++中,如何得到int型能表示的最大值,最小值? 第一種方法: 在limits.h/climits中,定義了INT_MAX,INT_MIN,可以直接使用 第二種方法: 如果要通過程式得到,比較簡單的一種方法是靠操作記憶體中的二進位制位了,具體需要了解數值在記憶體中的
int float double 最大值,最小值
http://blog.csdn.net/zxy_snow/article/details/6123551 <limits>中沒有double的最大最小值。。。 如果輸出的比如%.100lf輸出2.23432432,沒有達到100位,則最後2後面不一定都