非原始数简单算术的 Java 注解

标签 java math biginteger bigdecimal modulus

每个人都知道 Java 中的简单算术如何用于基元:

int one = 1,two = 2,three = one + two;
double four = (one + two) / three;
if(four % 1 == 0){
     System.out.println("Yay for simple maths!");
} else{
  throw new RealityError("http://www.youtube.com/watch?v=H91rPIq2mN4");
 }

但是当你离开原始类型的那一刻,事情就变得很快复杂了!尝试重复之前的简单算术是一个很大的挑战!

BigInteger bigOne = BigInteger.ONE, bigTwo = BigInteger.valueOf(2),
            bigThree = bigOne.add(bigTwo);
    BigDecimal bigFour = new BigDecimal(bigThree.divide(bigOne.add(bigTwo)));
    if (BigInteger.valueOf(bigFour.longValueExact()).mod(BigInteger.ONE).equals(BigInteger.ZERO)) {
        System.out.println("Yay for simple maths?!?!");
    } else {
        throw new RealityError("http://www.youtube.com/watch?v=H91rPIq2mN4");
    }

为什么像 +, -, *, or / 这样的运算符不使用注释?如@DefaultAddOperator对于扩展 Number 的类。或者,在 BigInteger 类中,为什么它不能实现一个接口(interface)来简单地说明在类上调用运算符时要执行的操作。这个概念并不太牵强,我的意思是它与 "Hello World!".toString() 一起使用。和重载运算符 + ,并且会大大简化上述基于类的算术。

最佳答案

这是因为java不支持运算符重载,如 。看看语言,他们确实如此。此外,groovy 使用 BigDecimal 作为非整数运算的主要类型。它支持所有这些基本操作。

关于非原始数简单算术的 Java 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325143/

相关文章:

java - 如果在 Android 中已知中心和起始坐标以及扫描角度,如何计算圆弧终点的坐标..?

vb.net - Visual Basic .NET 是否有大整数类(128 或更多位)?

java - 如何写出更优雅的代码? (阶乘、BigDecimals、除以 BigIntegers)

java - BigInteger 使用多少空间?

java - 使用 SQLiteOpenHelper onCreate() 方法时向 sqlite 插入 2 行

python - python中非常小的指数

java - 在android中保持常量的最佳方法

python - 提示用户退出或继续

java - 使用 Java 在 MAC OSX 和 Linux 中目录中的文件和目录列表

java - 如何获得信用额度计划的所有输入总和?