我有一个方法,它接受 2 个整数作为参数并返回:
public int method(int a, int b){
return Math.round((Math.abs(a-b)/3) - (Math.min(a,b)-1500)/10)
}
我已经创建了单元测试,它通过值 1400 和 1500(预期值为 43),但是对于 1459 和 1500 失败。预期输出是 18,但是我的方法返回 17。 我相信这可能与舍入有关,但是我看不到任何明显的错误。将 17.7(6) 舍入到 18 应该不会有任何问题。
编辑:
真正的函数略有不同(我没有 Math.abs(a-b) 但我因此定义了“diff”变量。我可以向你们保证我将其声明为双 diff;-我不知道为什么它变成 int diff :) 已解决,谢谢:)
最佳答案
Math.abs
和 Math.min
在将 int
作为参数传递时都返回 int
,因此您的代码正在执行整数除法而不是您期望的双除法。如果您将 3
和 10
替换为 3.0
和 10.0
,您的代码应该按您的预期工作。
关于java - 简单方程未通过单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379822/