java - 如何阻止 Java 对我的数字进行四舍五入,以便解决问题 3

标签 java rounding

所以我最近一直在做一些欧拉项目,但由于某种原因,我的代码无法工作,因为 Java 不断舍入我的分区。

public class Problem3 {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    double max = 0;
    double n = 600851475431.;

    for (double i = 2; i<Math.sqrt(n); i++){
        if (600851475431.%i == 0){
            if (isPrime (i) == true && i>max){
                max = i;
            }
        }
    }
    System.out.print(max);

}

public static boolean isPrime(double a){
    for (int i= 2; i<Math.sqrt(a); i++){
        if (a%i == 0){
            return false;
        }
    }
    return true;
}

首先,600851475431%168887不等于0,但Java一直认为它等于0。

最佳答案

提示:当您需要精确表示大于 2^31 - 1 的数字时,请使用 long。当您需要精确表示大于 2^64 - 1 的数字时,请使用 BigInteger .

600851475431 介于 2^392^41 之间。

我会让你得出结论。

编辑
另一个提示:if (600851475431.%i == 0){
注意.。这会强制将数字表示为 double 型。您有一个变量n,其中具有显式定义的类型。使用它。

关于java - 如何阻止 Java 对我的数字进行四舍五入,以便解决问题 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16495392/

相关文章:

r - R 中的上限函数不准确(有时)

python - 按特定数字进行浮点精度比较

java - 是否存在用于消息传递基础架构的开源项目?

java - 如何在不轮询的情况下从 Java Web 应用程序获取响应?

java - @JsonIgnore 不忽略hibernate Entity中的字段

python - 四舍五入到任何给定值 python

c++ - 给定一个微秒值,如何准确得到一个timeval结构?/*UPDATE GETTING NEGATIVE VALUE*/

java - Process Builder递增错误

java - 将两个json对象合并成java中的单个对象

输出中的舍入数字以将接近零的小数量显示为零