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); } }
浮点数
最新推荐文章于 2024-10-08 23:14:43 发布