为什么Java Math库没有返回浮点数的函数?

时间:2018-07-18 21:37:09

标签: java math double

例如,在以下代码段中:

float roll = (float)Math.atan2(sinr, cosr);

Math.atan2返回一个double,因此我将其强制转换为float。但是,我使用的大多数函数都返回double类型,这使我不得不频繁地进行转换变得很乏味,这让我觉得我使用的库是错误的。我需要float类型的数据来与其他也使用float的类一起工作。

我想知道为什么没有多个版本的Math函数将double转换为float,从而允许返回float而不是double(如果需要)。我知道为什么数学不应该直接在浮点数中,但是对于只使用浮点数的程序员来说,该库似乎不灵活。

为什么该库通常返回double类型?

1 个答案:

答案 0 :(得分:0)

您实际上并不需要第三方库:

class FloatMath {
  float atan2(float y, float x) {
    return (float) Math.atan2(y, x);
  }

  // etc, for other methods.
}

您只能为所需的方法编写这样的委托方法。然后只需在java.lang.Math处调用它即可。

但是,您强烈应该考虑采用另一种方法:直接使用java.lang.Math,然后将需要float的库调用包装在类似立面的后面。