亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

計算機中浮點數(shù)的表示 java四舍五入方法表達式

前言四舍五入到2或3個小數(shù)位是我們Java程序員日常開發(fā)中肯定會遇到 。幸運的是,Java API提供了幾種在Java中舍入數(shù)字的方法
【計算機中浮點數(shù)的表示 java四舍五入方法表達式】我們可以使用Math.round(),BigDecimal或DecimalFormat將Java中的任何浮點數(shù)四舍五入到n個位置 。我個人更喜歡使用BigDecimal在Java中四舍五入任何數(shù)字 , 因為它具有便捷的API并支持多種舍入模式 。另外,如果您在金融行業(yè)工作,最好使用BigDecimal進行貨幣計算 。
舍入數(shù)字時要記住的重要事項之一是舍入模式 。舍入模式?jīng)Q定了如何舍棄丟棄的分數(shù),了解諸如HALF DOWN,HALF UP和HALF EVEN之類的流行舍入模式肯定會有所幫助 。
相關(guān)知識點1.Java中的舍入模式在四舍五入之前要知道的重要一點是四舍五入模式 。通常,程序員認為,如果最后一位小于5,則舍去,如果最后一位大于5,則舍入;
舍入模式?jīng)Q定應(yīng)如何舍入最低有效位 。BigDecimal類具有定義為整數(shù)常量的舍入模式,此模式后來被Java 1.5中的RoundingMode枚舉所取代 。以下是一些要記住的重要RoundingMode:
RoundingMode.HALF_DOWN:如果兩個鄰居等距,則向下舍入,例如2.5將舍入為2.0

計算機中浮點數(shù)的表示 java四舍五入方法表達式

文章插圖
RoundingMode.HALF_UP:如果兩個鄰居的距離相同則向上舍入,例如2.5將舍入為3.0
計算機中浮點數(shù)的表示 java四舍五入方法表達式

文章插圖
RoundingMode.HALF_EVEN:如果兩個鄰居等距,則向偶數(shù)舍入,例如2.5將舍入到2.0,而5.5將舍入到6.0
計算機中浮點數(shù)的表示 java四舍五入方法表達式

文章插圖
還有其他一些舍入模式,例如UP , DOWN,F(xiàn)LOOR和CEILING,這也是值得了解的 。
2.使用BigDecimal將數(shù)字四舍五入到小數(shù)點后兩位每當我需要將數(shù)字四舍五入到小數(shù)點后n位時,我首先想到的是BigDecimal 。BigDecimal不僅允許您選擇RoundingMode,而且使用BigDecimal方法將數(shù)字四舍五入到任何小數(shù)位都很容易 。這是一個將數(shù)字四舍五入到小數(shù)點后兩位的示例:
package com.milo.base.sort;import org.junit.Test;import java.math.BigDecimal;/** * 測試BigDecimal的Api * @author milogenius * @date 2020-04-14 19:49 */public class BigDecimalTest {@Testpublic void test1(){float number = BigDecimal.valueOf(4.526f).setScale(2, BigDecimal.ROUND_HALF_DOWN).floatValue();System.out.println(number);}}----------------------------------------------Output:4.53在setScale()中,您可以指定需要舍入的小數(shù)位數(shù),在這里,我們將小數(shù)位數(shù)設(shè)置為2,因為我們將舍入到2位數(shù)字 。我們指定舍入模式ROUND_HALF_DOWN,類似于RoundingMode.HALF_DOWN 。您也可以使用RoundingMode.HALF_DOWN來代替
BigDecimal.ROUND_HALF_DOWN , 但是要注意,從Java 5開始添加了RoundingMode枚舉 。
3.使用DecimalFormat將數(shù)字四舍五入到小數(shù)點后兩位如果僅出于顯示目的四舍五入數(shù)字,則應(yīng)考慮使用DecimalFormat或String“格式方法類 。盡管使用BigDecimal舍入數(shù)字沒有錯,但DecimalFormat似乎是格式化數(shù)字的正確類 。
這是Java代碼 , 使用Java中的DecimalFormat將數(shù)字四舍五入到2位有效數(shù)字 。
@Testpublic void test2(){DecimalFormat df = new DecimalFormat("#.00");float number = Float.valueOf(df.format(4.526f));System.out.println(number);}----------------------------------------------Output:4.53#.00用于四舍五入到小數(shù)點后兩位,如果要四舍五入到小數(shù)點后第三位 , 只需使用#.000或#.0000來創(chuàng)建DecimalFormat 。要了解有關(guān)格式化數(shù)字的更多信息,請參見如何使用DecimalFormat在Java中格式化數(shù)字 。
4.使用Math.round()在Java中進行舍入運算Math.round()是Java中舍入數(shù)字的經(jīng)典方法 。盡管它沒有提供任何API來指定要舍入的位數(shù) , 但是通過使用乘法和除法,您可以將其舍入到n或2個小數(shù)位 。
順便說一句,這不是Java中舍入數(shù)字的首選方法,我更喜歡BigDecimal,但仍然是舍入數(shù)字的便捷方法,并且可以在許多情況下使用 。這是在Java中如何使用Math.round()函數(shù)將數(shù)字四舍五入到2位數(shù)字的方法 。
@Testpublic void test3(){float rounded = (float) Math.round(4.526f*100)/100;System.out.println(rounded);}----------------------------------------------Output:4.53如果需要四舍五入到小數(shù)點后五位,我們乘以100來四舍五入,然后乘以100000 。順便說一句 , Java的最佳實踐是優(yōu)先使用BigDecimal而不是Math.round()來對Java中的數(shù)字進行四舍五入
綜合案例這是一個Java綜合案例,它結(jié)合了以上3種方法 , 可以將Java中的任何數(shù)字四舍五入到小數(shù)點后兩位 。您可以將程序更改為最多三位,四位或任意位數(shù) 。
package com.milo.base.sort;import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.Arrays;/** * 使用三種方式演示java中保留2位小數(shù) * 包括 BigDecimal, * Math.round and DecimalFormat class. * @author milogenius */public class RoundingNumbers {public static void main(String args[]) {//數(shù)據(jù)float[] samples = new float[]{2.123f, 2.125f, 2.127f};//使用 Match.round()保留2位小數(shù)float[] rounded = round(samples);System.out.println("開始舍入, numbers: "+ Arrays.toString(samples));System.out.println("結(jié)束舍入 : 使用Match.round()方法 "+ Arrays.toString(rounded));//使用BigDecimal保留2位小數(shù)//我們可以使用不同的舍入模式e.g., HALF_UP, HALF_DOWN,and HALF_EVEN with BigDecimalrounded = roundUsingBigDecimal(samples);System.out.println("開始舍入,numbers : "+ Arrays.toString(samples));System.out.println("結(jié)束舍入, number 使用 BigDecimal: "+ Arrays.toString(rounded));//DecimalFormat Example to round number to 2 digits//使用DecimalFormat來保留2位小數(shù)rounded = roundUsingDecimalFormat(samples);System.out.println("開始舍入numbers: "+ Arrays.toString(samples));System.out.println("結(jié)束舍入,使用DecimalFormat: "+ Arrays.toString(rounded));}/***使用 Math.round保留2為小數(shù)* @param numbers* @return*/public static float[] round(float[] numbers) {float[] round = new float[numbers.length];for (int i = 0; i < numbers.length; i++) {float number = numbers[i];round[i] = (float) Math.round(number * 100) / 100;}return round;}/*** 使用BigDecimal保留2為小數(shù)* @param digits* @return*/public static float[] roundUsingBigDecimal(float[] digits) {float[] result = new float[digits.length];for (int i = 0; i < digits.length; i++) {float digit = digits[i];result[i] = BigDecimal.valueOf(digit).setScale(2, BigDecimal.ROUND_HALF_DOWN).floatValue();}return result;}/*** 使用DecimalFormat保留2為小數(shù)* @param decimals* @return*/public static float[] roundUsingDecimalFormat(float[] decimals) {float[] rounded = new float[decimals.length];//DecimalFormat to round numbers to 2 decimal placeDecimalFormat df = new DecimalFormat("#.00");for (int i = 0; i < decimals.length; i++) {float decimal = decimals[i];rounded[i] = Float.valueOf(df.format(decimal));}return rounded;}}總結(jié)(求轉(zhuǎn)發(fā)關(guān)注)綜上所述,就是如何在Java中將數(shù)字四舍五入到小數(shù)點后2位 。我們已經(jīng)看到3種在Java中舍入數(shù)字的方法,例如BigDecimal,DecimalFormat和Math.round() 。由于便捷的API和對不同舍入模式的支持,BigDecimal看起來是舍入數(shù)字的最佳方法 。


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: