1. 程式人生 > >解決java中兩個double型別的值相加

解決java中兩個double型別的值相加

每週六都急急忙忙趕過來加班,今天早上一同事問我兩個double型別相加會出現精度問題,找了很久沒找到原因,後來在網上一看需要額外處理一下,提供幾個通用的方法。

/**
	 * 提供精確的加法運算
	 * @param v1 被加數
	 * @param v2 加數
	 * @return 兩個引數的和
	 */
	public static double add(double v1, double v2)
	{
		BigDecimal b1 = new BigDecimal(Double.toString(v1));
		BigDecimal b2 = new BigDecimal(Double.toString(v2));
		return b1.add(b2).doubleValue();
	}

	/**
	 * 提供精確的減法運算
	 * @param v1 被減數
	 * @param v2 減數
	 * @return 兩個引數的差
	 */
	public static double sub(double v1, double v2)
	{
		BigDecimal b1 = new BigDecimal(Double.toString(v1));
		BigDecimal b2 = new BigDecimal(Double.toString(v2));
		return b1.subtract(b2).doubleValue();
	}

	/**
	 * 提供精確的乘法運算
	 * @param v1 被乘數
	 * @param v2 乘數
	 * @return 兩個引數的積
	 */
	public static double mul(double v1, double v2)
	{
		BigDecimal b1 = new BigDecimal(Double.toString(v1));
		BigDecimal b2 = new BigDecimal(Double.toString(v2));
		return b1.multiply(b2).doubleValue();
	}