为什么math.sqrt会将浮点数返回到一个小数点而不仅仅是小数点的值?

时间:2014-09-02 21:29:46

标签: java double square-root

我不确定这个问题是否已得到解答(当我进行谷歌搜索时找不到它)。 我看到http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html数学类的平方根方法返回一个double。我在日食中尝试了一些具有整个平方根的整数 - 4,9,并发现平方根与那些总是返回一个带有一位小数的浮点值 - 4.0,9.0。我很好奇为什么它甚至返回了额外的小数?我认为整数也可以被视为双重值。对我来说只返回1更有意义,因为你节省了更多的内存(我想更多的内存需要存储额外的小数点)我甚至测试了它

public static double control(){
    return 1;
}

并且看到返回1是有效的。

2 个答案:

答案 0 :(得分:1)

  

[我]发现[Math.sqrt(x),其中x是一个完美的平方]总是返回一个带小数的浮点值。

您错误地将值的特定打印表示与值本身混淆。双精度没有小数点。 double是表示特定实数的位模式(例如4)。

小数点仅出现在实数的特定十进制表示中。如果我写“0.25”,那显然有一个小数点。如果我写“1/4”,则没有小数点。但这些只是同一实数的两种不同表示。表示Java表达式返回的double值的特定位模式也是如此,1.0 / 4.0。

我不知道为什么Double.toString(4)返回字符串,“4.0”而不是返回“4”,但我猜想有人想让它与Java语言中的数字文字一致。当你的程序中出现“4”时,这是一个int literal,当你的程序中出现“4.0”时,这是一个双字面值。

答案 1 :(得分:-1)

该方法返回一个double。由于方法设置的返回类型,它将显示为double。这里有一个解决方案,在stackoverflow上返回in,如果它说4.0,如果不是则显示double。 Solution on stackoverflow