中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Java?Float保留小數位精度的實現

發布時間:2021-12-13 14:47:05 來源:億速云 閱讀:2109 作者:柒染 欄目:開發技術

如何進行Java Float保留小數位精度的實現,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Float 保留小數位精度

DecimalFormat decimalFormat=new DecimalFormat(".00");
return Float.valueOf(super.getDecimalFormat().format(new BigDecimal(handleTime)));

Float 浮點型數據保留兩位小數

用過兩種方法:DecimalFormat和Math.round()。

用法:

1、DecimalFormat

String java.text.NumberFormat.format(double number)方法

float f = 0.5555f;
DecimalFormat df1 = new DecimalFormat("#.00");//保留兩位小數,如果是零點幾,則小數點前的0不顯示,小數點后幾個零就保留幾位
df1.format(f);
#表示該位如果是0則不必顯示出來,0則表示該位如果是0仍然顯示;

函數的定義是:;

所以,傳參是double,也可以傳float(隱式轉換),最后的結果是String類型。

2、Math.round():

int java.lang.Math.round(float a)方法

float f = 1.222f;
f = Math.round(f * 100) / 100f;//乘以100,然后除以100轉換為浮點類型
/**乘以多少就保留多少位小數
**注意Math.round()方法傳float類型!
*/

兩種方法都會四舍五入。

如果是浮點類型建議用Math.round方法,也可以根據自己需求diy代碼。

詳細講解請看代碼注釋和控制臺輸出:(包含decimalFloat的格式、Math.round函數的實現邏輯)

package testMap; 
import java.text.DecimalFormat; 
public class TestFloat { 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//四舍五入保留兩位
		float f = 0.5555f;
		//decimalFormat是將double類型數據轉換為字符串,并進行格式化
		//#表示這位如果是0則不必顯示出來,0則表示這位如果是
		//format函數:String java.text.NumberFormat.format(double number)
		DecimalFormat df1 = new DecimalFormat("#.00");//首位0不顯示出來,即0.1顯示為  .1
		DecimalFormat df2 = new DecimalFormat("0.00");//首位0顯示出來,即0.1顯示為 0.1
		System.out.println("--------DecimalFormat----------");
		System.out.println("df1==" + df1.format(f));
		System.out.println("df2==" + df2.format(f));
 
		System.out.println(df1.format(f).getClass());//String類型
		System.out.println(Float.parseFloat(df1.format(f)));//轉換為float類型
		System.out.println(String.valueOf(df1.format(f)));
//		System.out.println(Float.toString(df1.format(f)));//轉換為String類型
		
		f = 0.595f;
		//Math.round()方法是將浮點類型數據 乘以10的多少次方 ,取整,然后 + 0.5 除以10的多少次方,取小數點后多少位
//		如乘以1000 則取小數點后3位
		System.out.println("---------Math.round()----------");
		System.out.println(Math.round(f * 100) / 100f);//四舍五入后如果末尾是0,自動省略,不顯示
		
//		System.out.println(df1.format("1.2"));//參數必須是數值型String java.text.NumberFormat.format(double number)
		System.out.println(Float.toString(f));//轉換為String輸出效果
		System.out.println(Float.toString(f));//轉換為String輸出效果
				
		System.out.println("-----------Math.round()的正數非特殊值實現邏輯--------------");
		f = 11.115111f;
		int b = (int) (f * 100 + 0.5);
		float a = b / 100f;
		System.out.println("a==" + a);
		System.out.println((int)(f * 100 + 0.5) / 100f);
		
		f = -12.115f;
		System.out.println("負數" + Math.round(f * 100) / 100f);
		f = -12.116f;
		System.out.println("負數" + Math.round(f * 100) / 100f);		
		
		System.out.println("-------Math.round()的負數非特殊值實現邏輯--------");
		int c = (int) (f * 100 - 0.5);
		float d = c / 100f;
		System.out.println("d==" + d);
		System.out.println((int)(d * 100 - 0.5) / 100f);
	} 
}

控制臺輸出:

截圖如下:

如何進行Java?Float保留小數位精度的實現

----下面的是控制臺輸出-----(和上面一樣的,怕圖片丟失)

--------DecimalFormat----------
df1==.56
df2==0.56
class java.lang.String
0.56
.56
---------Math.round()----------
0.6
0.595
0.595
-----------Math.round()的正數非特殊值實現邏輯--------------
a==11.12
11.12
負數-12.11
負數-12.12
-------Math.round()的負數非特殊值實現邏輯--------
d==-12.12
-12.12

順便貼上NumberFormat.formart()的代碼:

/**
     * Specialization of format.
     *
     * @param number the double number to format
     * @return the formatted String
     * @exception        ArithmeticException if rounding is needed with rounding
     *                   mode being set to RoundingMode.UNNECESSARY
     * @see java.text.Format#format
     */
    public final String format(double number) {
        // Use fast-path for double result if that works
        String result = fastFormat(number);
        if (result != null)
            return result;
 
        return format(number, new StringBuffer(),
                      DontCareFieldPosition.INSTANCE).toString();
    }

關于如何進行Java Float保留小數位精度的實現問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭阳市| 额敏县| 沙河市| 山阳县| 石首市| 饶平县| 汕尾市| 嵩明县| 江油市| 罗山县| 黄浦区| 横峰县| 大姚县| 达拉特旗| 犍为县| 乌拉特前旗| 广汉市| 油尖旺区| 东平县| 乐昌市| 望谟县| 中西区| 寿阳县| 漳平市| 南京市| 通榆县| 涟源市| 富民县| 林口县| 萍乡市| 尖扎县| 荔波县| 龙南县| 苏州市| 盐亭县| 石景山区| 滦南县| 永顺县| 肇源县| 灵山县| 建平县|