欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java double類型相加精度問題的解決

 更新時間:2021年01月21日 10:45:09   作者:qq_26676207  
這篇文章主要介紹了java double類型相加精度問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

package com.hxyl.action; 
import java.text.DecimalFormat;
public class Test { 
	public static void main(String[] args) { 
		// DecimalFormat 類主要靠 # 和 0 兩種占位符號來指定數(shù)字長度。0 表示如果位數(shù)不足則以 0 填充,# 會把最后面的零默認省略。		
		DecimalFormat df = new DecimalFormat("0.000");
		
		double d1 = 116.32;
		double d2 = 0.11;
		double cc=d1+d2;
		//cc===116.42999999999999(不做處理就是這樣)
		System.out.println("cc===="+cc);
 
		//dd====116.430
		System.out.println("dd===="+df.format(d1+d2));
		DecimalFormat df1 = new DecimalFormat("#.###");
		
		double d11 = 116.32;
		double d21 = 0.11;
		//dd====116.43
		System.out.println("dd1===="+df1.format(d11+d21));		
	} 
}
doublepi=3.1415927; //圓周率
    //取一位整數(shù)
    System.out.println(newDecimalFormat("0").format(pi));   //3
    //取一位整數(shù)和兩位小數(shù)
    System.out.println(newDecimalFormat("0.00").format(pi)); //3.14
    //取兩位整數(shù)和三位小數(shù),整數(shù)不足部分以0填補。
    System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
    //取所有整數(shù)部分
    System.out.println(newDecimalFormat("#").format(pi));   //3
    //以百分比方式計數(shù),并取兩位小數(shù)
    System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16%  
    longc=299792458;  //光速
    //顯示為科學計數(shù)法,并取五位小數(shù)
    System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8
    //顯示為兩位整數(shù)的科學計數(shù)法,并取四位小數(shù)
    System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7
    //每三位以逗號進行分隔。
    System.out.println(newDecimalFormat(",###").format(c));   //299,792,458
    //將格式嵌入文本
    System.out.println(newDecimalFormat("光速大小為每秒,###米。").format(c));

補充:java double類型運算避免精度丟失

/**
	 * 保留兩位小數(shù)
	 * 
	 * @param values
	 * @return
	 */
	public static double format2(double values) {
		return new BigDecimal(Double.toString(values)).setScale(2, RoundingMode.HALF_UP).doubleValue();
	} 
 
	/**
	 * 
	 * @param values
	 *   乘數(shù)
	 * @param values2
	 *   被乘數(shù)
	 * @param digit
	 *   保留位數(shù)
	 * @return
	 */
	public static double multiplication(double values, double values2, int digit) {
		BigDecimal b1 = new BigDecimal(Double.toString(values));
		BigDecimal b2 = new BigDecimal(Double.toString(values2));
		return b1.multiply(b2).setScale(digit, RoundingMode.HALF_UP).doubleValue();
	} 
 
	/**
	 * 相加
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double sum(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return b1.add(b2).setScale(2, RoundingMode.HALF_UP).doubleValue();
	} 
 
	/**
	 * 相減
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double sub(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return b1.subtract(b2).setScale(2, RoundingMode.HALF_UP).doubleValue();
	} 
 
	/**
	 * 相除
	 * 
	 * @param d1
	 *   除數(shù)
	 * @param d2
	 *   被除數(shù)
	 * @return
	 */
	public static double divide(double d1, double d2) {
		if (d1 == 0d || d2 == 0d) {
			return 0d;
		}
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return new Double(b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP).doubleValue());
	}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 詳解Java的Hibernate框架中的List映射表與Bag映射

    詳解Java的Hibernate框架中的List映射表與Bag映射

    這篇文章主要介紹了Java的Hibernate框架中的List映射表與Bag映射,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • 淺談Spring Data JPA與MyBatisPlus的比較

    淺談Spring Data JPA與MyBatisPlus的比較

    本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較
    2024-08-08
  • Spring中的事務(wù)控制知識總結(jié)

    Spring中的事務(wù)控制知識總結(jié)

    我們講了轉(zhuǎn)賬方法存在著事務(wù)問題,當在業(yè)務(wù)層方法更新轉(zhuǎn)入賬戶時發(fā)現(xiàn)異常,更新收款方賬戶則會出錯.當時是通過自定義事務(wù)管理器進行整體事務(wù)的處理.其實Spring 提供了業(yè)務(wù)層的事務(wù)處理解決方案,并且 Spring 的事務(wù)控制都是基于 AOP 的,需要的朋友可以參考下
    2021-06-06
  • java工廠實例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    java工廠實例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java從控制臺接受輸入字符的簡單方法

    Java從控制臺接受輸入字符的簡單方法

    這篇文章主要介紹了Java從控制臺接受輸入字符的簡單方法,需要的朋友可以參考下
    2014-02-02
  • 關(guān)于Java中避免空指針的方法

    關(guān)于Java中避免空指針的方法

    這篇文章主要介紹了關(guān)于Java中避免空指針的方法,空指針異常就是我們在對空對象進行的任何操作都會報空指針異常,所謂的指針,就是java中的對象的引用,比如String?s;這個就是指針,需要的朋友可以參考下
    2023-07-07
  • java eclipse 中文件的上傳和下載示例解析

    java eclipse 中文件的上傳和下載示例解析

    這篇文章主要介紹了eclipse java中文件的上傳和下載示例解析,文件上傳,瀏覽器在上傳的過程中是將文件以流的形式提交到服務(wù)器端的。對此感興趣的小伙伴可以了解一下
    2020-07-07
  • Java StringBuffer與StringBuilder有什么區(qū)別

    Java StringBuffer與StringBuilder有什么區(qū)別

    當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder類,和String類不同的是,StringBuffer和 StringBuilder類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象,本篇我們來分析分析它們的區(qū)別
    2023-01-01
  • SpringBoot集成kafka全面實戰(zhàn)記錄

    SpringBoot集成kafka全面實戰(zhàn)記錄

    在實際開發(fā)中,我們可能有這樣的需求,應(yīng)用A從TopicA獲取到消息,經(jīng)過處理后轉(zhuǎn)發(fā)到TopicB,再由應(yīng)用B監(jiān)聽處理消息,即一個應(yīng)用處理完成后將該消息轉(zhuǎn)發(fā)至其他應(yīng)用,完成消息的轉(zhuǎn)發(fā),這篇文章主要介紹了SpringBoot集成kafka全面實戰(zhàn),需要的朋友可以參考下
    2021-11-11
  • 解決阿里代碼規(guī)范檢測中方法缺少javadoc注釋的問題

    解決阿里代碼規(guī)范檢測中方法缺少javadoc注釋的問題

    這篇文章主要介紹了解決阿里代碼規(guī)范檢測中方法缺少javadoc注釋的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論