day*_*mer -1 java floating-point double
我有一个方法
private static double getMinorVersion(final double minorVersion) {
return minorVersion + 0.1;
}
Run Code Online (Sandbox Code Playgroud)
当我测试这个
final Version version = new Version(1.3, VersionType.MINOR, 0.0);
final Version newVersion = versionManager.patch(version);
assertEquals(1.4, newVersion.getVersionNumber(), delta); // delta = 0.0
Run Code Online (Sandbox Code Playgroud)
我明白了
java.lang.AssertionError:
Expected :1.4
Actual :1.4000000000000001
Run Code Online (Sandbox Code Playgroud)
我怎样才能修复它1.4?
不要使用doubles来表示软件版本号.它们应该存储为字符串.
除了遇到精确问题,就像你已经注意到的那样,版本号不是十进制数.例如,约定是版本号1.1并且1.10不相等(相反,1.10是下面的版本1.9),并且版本号通常包含多个句点(例如1.1.1)或非数字字符(例如1.0b2).
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |