Java开发知识之Java的数字处理类Math类
一丶Java.text.DecimalFormat類與NumberFormat類
首先 Java.text.DecimalFormat指的是DecimalFormat類在Java.text包中. 其中DecimalFormat類是NumberFormat的子類.
這個類的作用: 這個類的作用就是格式化我們的數值的.
比如:
看如下代碼:
public static void main(String[] args) {// TODO 自動生成的方法存根fmt("%",0.30); //百分號顯示.fmt("##,##,##",123456); //以逗號隔開fmt("kg",12); //直接這樣寫kg在前.因為你沒有加占位符.fmt("##kg",12); //加上##代表這里有兩個字數字.我們后邊有兩個輸出就是12kg} //fmt是抽取的格式化方法. 參數parr是格式化字符串. Value就是傳入的值public static void fmt(String parr,double Value) {DecimalFormat fmt = new DecimalFormat(parr);String FmtStr = fmt.format(Value); //使用format進行格式化.返回一個字符串.System.out.println("Value = " + FmtStr);}可能第一眼看著很暈. 其實就是按照你的格式進行格式化.
比如 %. 代表的就是百分號. %30 ##的意思就是占位.意思是我們后邊跟的數在這里已經有位置了. 比如123456 ######需要六個##占位.然后我們每兩個加上一個逗號.那么就會進行加逗號返回.
格式如下: 具體參照JAVA AP提供
上面程序輸出結果
具體格式化類中也有很多方法使用.不過常用的了解即可.使用的時候知道有怎么一個類.我們去查詢文檔即可.
二丶數學類 Math
math類就是數學類.我們常用的數學方法都在這里.比如三角函數的求值. PI(3.14)等等. 具體方法不一一介紹了.下面一章節截圖給出.
指數相關方法
3.取整相關方法
4.最大值最小值.絕地值
三丶隨機數
1.Math中的隨機數
隨機數在java中可以使用math.random.
使用簡介:
當我們使用Math.random的時候隨機數的值如上.如果有n值.那么不會超過n. m+n 的時候.不會超過m+n的值.
代碼例子:
public static void main(String[] args) {//加上##代表這里有兩個字數字.我們后邊有兩個輸出就是12kggetRandomValue(1,10);}public static void getRandomValue(int argNum1,int argNum2) {int nValue =(int)(argNum1) + (int)(Math.random() * (argNum2 - argNum1));System.out.println(nValue);}我們每次運行的時候隨機數的值都不會大于10
m 在上面代碼中代表的就是 (int)(argNum1);
n 在上面代碼代表的是就是 (argNum2 - argNum1);
int nValue = m + math.random * n; 帶入公式即可.
2.Random類中的隨機數
上面使用了Math中的random方法.生成了隨機數.其實Java也跟我們提供了Random類. 也是用來生成隨機數的.有不同的地方.
不同的地方就是使用了隨機數種子. 什么是隨機數種子. 隨機數種子可以看成一個數.在我們生成的隨機數里面會使用這個種子參與運算符.
例如: xxx * 隨機數種子 +xxxx / xxxx == xxxx; 當然這個公式是假的.我隨便寫的.目的就是告訴大家它的算法里面隨機數種子會參與運算.
首先是構造函數:
兩個構造.一個是默認生成一個種子.使用的時間. 另一個是我們填寫的.
如果是默認的.隨機數生成的都很類似.原因就是它使用了系統時間做運算.我們指定的就不會了.
看看提供的方法;
以nextint為例. 他的意思就是返回一個隨機數. 小于n的值. 跟我們上面所講的一樣. m + n的值也可以.
public static void main(String[] args) {//加上##代表這里有兩個字數字.我們后邊有兩個輸出就是12kggetRandomValue(1,10);}public static void getRandomValue(int argNum1,int argNum2) {Random r = new Random();int nValue = r.nextInt(argNum1 + (argNum2 - argNum1));System.out.println(nValue);}如果使用隨機的的種子.那么生成的隨機數就不同.如果我們構造里面給定了值,那么每次生成就會一樣的.原因就是你的隨機數種子沒有改變. 隨機數種子. 顧名思義就是隨機的數.你的數一直一樣.那么生成的隨機數也就是一樣的了.
四丶Java中的大數處理類 Java.math.BigInteger 跟 Java.math.Decimat類
首先大數.什么是大數. 大數就是基本類型處理不下的數字. 舉個簡單的例子. 求階乘. 求 2 - 2017的階乘. 這個數不管是int類型.還是long類型 longlong類型(C++的) 都是放不下的.但是我們有需求怎么辦.
此時我們就要想辦法將它做出來. 第一種辦法就是使用數組.自己模擬進位操作.乘法操作. 具體可以上網搜一下大數階乘.當時考試的時候有怎么一道題目.當時做出來了.現在已經忘了.
廢話不多說
我們說了Java是面相對象.方法都給你提供好了.你只管調用即可. 此時我們的 BigInteger類 跟 Decimat類就是將我們上面所述的步驟給封裝起來了
BigInteger類: 大數處理整數類. 不帶小數. 主要用于處理整數的 加減乘除
Decimat類: 帶小數的大數處理
以BigInteger為例講解
構造方法:
構造方法有四個.我們可以使用第三個. 意思就是傳入一個字符串. 這個字符串是一個大數值.
方法提供:
方法提供了很多. 基本的加減乘除 還有求絕對值等等.不會一一講解.
我們以基本的加減乘除為例 add subtract muiply divide
public static void main(String[] args) {//加上##代表這里有兩個字數字.我們后邊有兩個輸出就是12kgShowNumber();}public static void ShowNumber() {BigInteger a = new BigInteger("100000000000000000");BigInteger b = new BigInteger("400000000000000000");BigInteger c = a.add(b);System.out.println(c.toString());}使用三個BigInteger類. 分別是 a b c. a b的值通過構造給定. a.add的時候.返回值也是一個BigInteger.所以用c接受.
最后輸出的時候.需要調用 c.toString();方法. toString是父類Object的.BigInteger進行了重寫.他重寫的就是輸出計算后的數值.
輸出結果:
剩下的方法.我們需要用到自己查詢JAVA API即可.
五丶總結
1.DecimalFormat類是NumberFormat的子類. 作用就是按照指定格式格式化數值.進行輸出. 比如 %30等等. 在C++中要使用方法 sprintf或者 wsprintf是C 調用約定.
2.math數學類. math數學類提供了很多數學上的方法. 三角函數 取整 指數 最大最小值. 等方法.
3.學習了隨機數類 Random.以及math中的隨機函數random. 有一個公式 m + math.random * n; 結果小于m+n的值.不會等于m+n的值或者大于m+n的值. random類也可以使用這個公式.
Random類中提供了方法讓我們獲取隨機數.
4.大數處理類 BigInteger (大數整數處理) 以及 Decimat類. (帶小數的大數處理) 這兩個類適用于需要使用大數的時候.提供了基本的加減乘除. 以及其他的數學函數. 取余 取絕對值.....
總結
以上是生活随笔為你收集整理的Java开发知识之Java的数字处理类Math类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从做
- 下一篇: 增值电信业务经营许可证好申请吗?