在Java中,負數的絕對值竟然不一定是正數!!!
絕對值是指一個數在數軸上所對應點到原點的距離,所以,在數學領域,正數的絕對值是這個數本身,負數的絕對值應該是他的相反數。
這幾乎是每個人都知道的。
在Java中,想要獲得有個數字的絕對值,可以使用
java.lang.Math
中的
abs
方法,這個類共有4個過載的abs方法,分別是:
public
static int
abs
(
int a
)
{
return
(a
<
0
)
?
-a
: a
;
}
public
static long
abs
(
long a
)
{
return
(a
<
0
)
?
-a
: a
;
}
//java學習交流:737251827 進入可領取學習資源及對十年開發經驗大佬提問,免費解答!
public
static float
abs
(
float a
)
{
return
(a
<=
0.0F
)
?
0.0F
- a
: a
;
}
public
static double
abs
(
double a
)
{
return
(a
<=
0.0D
)
?
0.0D
- a
: a
;
}
以上4個方法分別返回int、long、float、double型別的絕對值,方法裡面的邏輯也簡單,
無非就是整數直接返回,負數取相反數返回。
所以,基於以上所有的知識,我們經常會直接使用
Math.abs
來對一個數字取絕對值。
在我們的程式碼中,也有很多這樣的例子。
比如,我們需要用訂單號做分庫分表,但是訂單號是字串型別,所以,我們就需要取得這個字元換的hashCode,因為 hashCode可能是負數,所以然後再對hashCode取絕對值,再用這個值去對分表數取模:
Math.abs(orderId.hashCode()) % 1024;
但是,上面這個邏輯是有問題的!!!
因為在極特殊情況下,上面的程式碼會得到一個負數的值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2847678/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在Java中,整數的絕對值不一定是正數Java
- 【c語言】將正數變成對應的負數,將負數變成對應的正數C語言
- Python中負數變成正數常用的方法!Python
- java二進位制正數和負數取反Java
- 自己對Java中if變數賦值的理解Java變數賦值
- 在 ISO C90 標準中 C 語言負數比正數大?
- JavaScript 負數轉換為正數JavaScript
- JavaScript判斷數字正負數JavaScript
- javascript獲取數字的絕對值程式碼例項JavaScript
- 利用js正規表示式校驗正數、負數、和小數JS
- Oracle將數值轉化成負數的寫法Oracle
- js 將負數或小數轉成正整數JS
- js-正負數保留小數點特定位數JS
- python列表中切片的正負數Python
- 二進位制中為什麼負數是正數取反再加一
- 「日誌」Navicat統計的行數竟然和表實際行數不一致
- 匹配正負小數正規表示式程式碼
- 專案三 負數把正數趕出佇列佇列
- Python 和 c++/c/java 對於負數的儲存方式對比PythonC++Java
- 演算法之絕對眾數演算法
- C/C++模運算(正負整數)C++
- 第6周-統計正數和負數的個數然後計算這些數的平均值
- 記錄在 jmeter 介面測試中 json 返回數值幾種特殊正則提取JMeterJSON
- echarts問什麼 tooptip引數值會不一樣?EchartsOOP
- tabIndex屬性值為負數的作用是什麼Index
- 【C語言】編寫一個函式,將一個數字字串轉換成該字串對應的數字(包括正整數、負整數)。C語言函式字串
- javascript判斷數字正負程式碼例項JavaScript
- Carbon 計算時間差 得出的應該是負數 但是卻是正數
- Python中求絕對值的三種方法詳解!Python
- DWR中Java方法的引數及返回值、物件javabeanJava物件Bean
- Java中形式引數與返回值問題Java
- Echarts多條折線圖line顯示數值和真實數值不一致Echarts
- ant如何替換JAVA程式碼中的String變數中的值?Java變數
- 在Java程式中列印java執行時引數Java
- python計算對數值Python
- C#中的值引數,引用引數及輸出引數C#
- 數值在Oracle的內部儲存Oracle
- 在陣列中尋找和為指定值的兩個數陣列