Java中确定十进制值最快最有效的方法是整数
给定一个名为 sizeValue
的双精度变量,且 sizeValue
包含 0 以外的值,确定 sizeValue
包含以下值的最有效方法是什么一个整数?
目前我正在使用
sizeValue % 1 == 0
还有其他更快的方法吗?
Given a double variable named sizeValue
and sizeValue
contains something other than 0, what is the most efficient way to determine that sizeValue
contains a value that is an integer?
Currently i'm using
sizeValue % 1 == 0
any other faster ways?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试一下 Math.ceil:
编辑
我用以下方法做了一些基准测试:
isInt1
是其中更快的一个(在sunjre 1.6上)give a try to Math.ceil:
EDIT
I've done some benchmarks with the following methods:
isInt1
is the faster of them (on a sunjre 1.6)我不确定它是否更快,但您可以将 double 转换为 int 并测试是否相等:
I am not sure if it is any faster, but you could cast your double to an int and test for equality:
警告:您会认为
0.9999999999999999
是一个整数吗?可能不会。但请注意:这会打印出:
这是有问题的,因为在程序末尾
val
包含一些您认为应该是整数但实际上不是的东西。因此,我会通过集成像 JUnit 确实如此:
当然还提供了具有合理默认值的相同方法:
现在 isInt(val) 终于返回 true。
Warning: would you consider
0.9999999999999999
an integer? Probably not. But watch this:This prints out:
Which is problematic because at the end of the program
val
contains something that you think should be integer but is not.So I'd make my method a bit slower (but more correct) by integrating a delta like JUnit does:
and of course provide the same method with a sensible default:
Now
isInt(val)
finally returns true.