0

试图找到一种仅使用整数类型进行简单舍入的方法。找到以下解决方案:

示例 1 - 四舍五入

Value1=260
Value2=305

Tmp1=(10 * Value1) / Value2 = 8.52 = 8 (integer)
Tmp1=(Tmp1 + 5) / 10 = (8 + 5) / 10 = 1.3 = 1 (integer)

示例 2 - 向下舍入

Value1=76
Value2=305

Tmp1=(10 * Value1) / Value2 = 2,49 = 2 (integer)
Tmp1=(Tmp1 + 5) / 10 = (2 + 5) / 10 = 0.7 = 0 (integer)

有没有更好的方法来做到这一点?

也许这可以帮助遇到同样问题的其他人。

4

3 回答 3

0

假设数字是无符号数字,并且假设需要四舍五入的行为,那么如果两个条件之一适用,事情就很容易了。如果除数已知是 2 的倍数,只需计算 (n/(d/2)+1)/2。如果不知道除数是 2 的倍数,但知道除数不会太大,则计算 ((2*n/d+1)/2。如果两个条件都不适用,则需要单独处理更多案例。

于 2013-12-26T22:22:22.713 回答
0

哪种编程语言?通常你有轮函数来做这些操作。Java 示例:

//.00 added to get 2 decimals
double Value1=260.00;
double Value2=305.00;

int Tmp1,Tmp2;

//To round from 5,1 to 5:

Tmp1 = (int) Math.floor(Value1/Value2);

//To ceil from 5,1 to 6:

Tmp1 = (int) Math.ceil(Value1/Value2);
于 2013-10-16T10:08:40.673 回答
0

希望这可以帮助:

int round(float myValue) {  [Test Values: 0.51, 0.49, 2.7, 3.3]
int rounded=myValue*2  [1,0,5,6]
int toAdd=myValue % 2  [1,0,1,0]
rounded=rounded/2      [0,0,2,3]
rounded=rounded+toAdd  [1,0,3,3]
return rounded
}
于 2013-10-16T10:25:49.457 回答