分割整数类型-结果可预测吗?
本文关键字:结果 整数 类型 分割 | 更新日期: 2023-09-27 18:14:01
我有一个64位的长度,我想把它舍入到最接近的10000,所以我做了一个简单的:
long myLong = 123456789
long rounded = (myLong / 10000) * 10000; //rounded = 123450000
这似乎做了我所期望的,但由于我不是100%了解整数类型如何被划分的内部,我只是稍微担心可能存在这种情况,这不会像预期的那样工作。
这在非常大的数字/边缘情况下仍然有效吗?
是的,只要没有结果,中间或其他,超过long.MaxValue
,它将工作。
要明确您的常量,您可以在末尾使用L
说明符,例如123456789L
。
是的,它会工作。整数除法的语义保证了你所期望的。
然而,为您的特定用例(包括边缘用例)编写一些测试可能是好的。