什么是std :: round(double)的java等价物?

use*_*475 0 c++ java

在cpp文件中我有std :: round(double)

我能否知道Java中的等效代码

编辑:我已经java.lang.Math.round(double)在99%的情况下使用并获得匹配.但在某些地方我遇到了不匹配的问题.例如:

  • std::round(4816.5058) = 4816Math.round(4816.5058) = 4817
  • std::round(4466.49996) = 4467Math.round(4466.49997) = 4466

ska*_*man 8

java.lang.Math.round(double)

  • @ user462475:您将来的问题:当您提出问题时,请不要隐藏上述评论中的重要细节. (8认同)
  • 你的例子至少从java方面看起来对我来说是正确的.如果有什么我会说c ++的结果看起来错了.在这种情况下,Java看起来更精确. (4认同)
  • @ user462475:`double`类型,一般来说,往往比精确度更精确.看起来你的C++结果实际上是错误的(根据半场四舍五入;还有其他类型),我猜是因为准确性问题.Java"double"类型也存在准确性问题,但显然它们没有出现在你的两个例子中(因为半场舍入是正确的).(Java提供了其他数字类型以获得完美的准确性,特别是`BigDecimal`.但是你失去了一些速度,这就是为什么"传统的"`double`类型有精度限制.) (4认同)