浮点数

public class Main {
	public static void main(String[] args) {
		// 程序计算中应尽量避免小数的比较因为再程序中小鼠不能精确比较。如:
		System.out.println((0.1 + 0.2) == 0.3);// 输出为false
		/**
		 * 可采取的办法 
		 * 1.如果是小数,可扩大到相同的倍数,转换为整数。
		 * 2.如果是分数,则可通过同分的方法把除运算改为乘运算。
		 * 3.自己编写有力数类。
		 */
		/**
		 * 在IEEE754标准中有5个特殊值
		 * Infinity(正无穷大) 
		 * Infinity(负无穷大)
		 * 0.0(正无穷小) 
		 * -0.0(负无穷小)
		 * NaN(不是一个数)
		 */
		System.out.println(0.2 / 0);// 输出 :Infinity
		System.out.println(0.2 / 0 - 0.1 / 0);// 输出:NaN
		System.out.println(1.0 / (0.2 / 0));// 输出:0.0
	}
}

// 有理数类
class Rational {
	private long _a;// 分子
	private long _b;// 分母

	public Rational() {
		_a = 1;
		_b = 1;
	}

	// 化简分数
	public Rational(long a, long b) {
		long d = _gcd(a, b);
		_a = a / d;
		_b = b / d;
	}

	// 最大公约数
	private static long _gcd(long x, long y) {
		if (x < 0)
			x = -x;
		if (y < 0)
			y = -y;
		if (y == 0)
			return x;
		return _gcd(y, x % y);
	}

	// 分数相加
	public Rational add(Rational x) {
		return new Rational(this._a * x._b + this._b * x._a, _b * x._b);
	}

	// 分数想乘
	public Rational mul(Rational x) {
		return new Rational(this._a * x._a, this._b * x._b);
	}

	// 分数取负
	public Rational negative() {
		return new Rational(-this._a, this._b);
	}

	// 分数减
	public Rational sub(Rational x) {
		return add(x.negative());
	}

	// 求倒数
	public Rational inverse() {
		return new Rational(this._b, this._a);
	}

	// 除
	public Rational div(Rational x) {
		return mul(x.inverse());
	}

	public String toString() {
		if (_b == 1) {
			return "" + _a;
		} else {
			return _a + "/" + _b;
		}
	}
}
import java.math.BigDecimal;
import java.math.MathContext;
/**
 * 大浮点数据计算
 * @author Administrator
 *
 */
public class Main{
	public static void main(String[] args) {
		BigDecimal bd=BigDecimal.valueOf(1).divide(BigDecimal.valueOf(6),new MathContext(100));
		System.out.println(bd);
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值