1
141
这适用于正数,不确定负数。它只使用整数数学。
编辑:这里有一个使用负数的版本,如果“向上”表示结果总是>=输入。
|
2
92
无条件:
这类作品 rounding away from zero 对于负数 编辑:也适用于负数的版本
如果
|
3
33
当系数始终为正时,此方法有效:
编辑:返回
|
4
22
这是“如何找出N位需要多少字节”问题的概括。(A:(n位+7)/8)。
|
5
14
也不必乱碰环境 |
6
9
这适用于任何浮点数或基数(例如,可以将-4四舍五入到最接近的6.75)。本质上,它是转换到固定点,在那里四舍五入,然后再转换回来。它通过舍入0来处理负片。它还通过将函数转换为舍入来处理负值舍入。 特定于int的版本如下:
这或多或少是普林特的答案,加上负输入支持。 |
7
8
对于任何寻求简短而甜蜜答案的人。这是我用过的。没有否定的解释。
这将返回上一个因子。
将返回下一个。希望这能帮助别人。:) |
8
7
这是一个现代的C++方法,它使用了一个模板函数,它用于浮点、双、长、int和短(但不是长的长,因为使用了双值而长了一倍)。
但您可以轻松地添加对
若要创建要汇总的函数,请使用
创建“Round up”或更著名的“Round天花板”模板功能,如下所示:
创建“Round down”或更确切地说是“Round floor”模板功能,如下所示:
|
9
5
首先,您的错误条件(multiple==0)应该有一个返回值。什么?我不知道。也许你想提出一个例外,这取决于你自己。但是,什么也不归还是危险的。
其次,您应该检查numtoround是否已经是一个倍数。否则,当您添加
第三,你的石膏是错误的。你投
最后一点,你想要负数做什么?四舍五入“向上”可以表示四舍五入为零(与正数同向四舍五入),也可以表示远离零(较大的负数)。或者,也许你不在乎。 下面是前三个修复的版本,但我不处理负面问题:
|
10
4
四舍五入为二:以防任何人需要一个将正数四舍五入到二次方的最接近倍数的解决方案(因为我就是这样结束的):
如果输入的数字已经是一个倍数,它将保持不变。
下面是gcc提供的x86_64输出
每个C代码行与其程序集中的行完全对应: http://goo.gl/DZigfX
每一条指令都是
极快
,所以功能也非常快。因为代码很小很快,所以
信用: |
11
3
我正在使用:
对于两种权力:
请注意,这两个圆负值都是零(这意味着对所有值舍入到正无穷大),它们都不依赖于符号溢出(在C/C++中是未定义的)。 这给出:
|
12
2
可能更安全的方法是强制转换为float并使用ceil()—除非您知道int除法将产生正确的结果。 |
13
2
C++将每一个数字向下舍入,因此如果你加0.5(如果它的1.5将是2),但是1.49将是1.99,因此1。 编辑-很抱歉,没有看到您想要进行四舍五入,我建议使用ceil()方法而不是+0.5 |
14
2
好吧,首先,因为我不太明白你想做什么,台词
当然可以缩短到
|
15
2
可能这有助于:
|
16
2
总是把事情搞得一团糟
始终打开(1,10)->10 始终打开(5,10)->10 始终打开(10,10)->10 四舍五入
始终向下(1,10)->0 始终向下(5,10)->0 始终向下(10,10)->10 以正常方式取整
正圆形(1,10)->0 正圆形(5,10)->10 正圆形(10,10)->10 |
17
1
我发现了一个类似于上面发布的算法: int[(x+n-1)/n]*[(n x)/x],其中x是用户输入值,n是正在使用的倍数。 它适用于所有值x,其中x是整数(正或负,包括零)。我专门为C++程序编写的,但基本上可以用任何语言来实现。 |
18
1
对于负数: 这应该很容易做到,但标准的模%运算符并不像人们预期的那样处理负数。例如-14%12=-2而不是10。首先要做的是得到从不返回负数的模运算符。那么,汇总就非常简单了。
|
19
1
这就是我要做的:
代码可能不是最佳的,但我更喜欢干净的代码而不是干的性能。 |
20
1
虽然:
建议改用无符号整数,它定义了溢出行为。 您将得到一个异常multiple==0,但在这种情况下,它并不是一个定义良好的问题。 |
21
1
丙:
对于您的~/.bashrc:
|
22
1
如果
我们找到余数的倒数,然后用除数的模再次使其无效,如果它是除数本身,则加上
|
23
1
这是我的解决方案,基于OP的建议,以及其他人给出的例子。因为大多数人都希望它能处理负数,所以这个解决方案就是这样做的,而不需要使用任何特殊的函数,例如abs等。 通过避免使用模量并使用除法,负数是一个自然的结果,尽管它是四舍五入的。在计算完向下取整的版本后,它将进行所需的数学取整,无论是负方向还是正方向。 同样要注意的是,没有使用特殊的函数来计算任何东西,所以这里有一个小的速度提升。
|
24
1
四舍五入到最接近的倍数,正好是2的幂
这对于沿缓存线分配时很有用,因为您需要的舍入增量是2的幂,但结果值只需要是它的倍数。论
|
25
0
|
26
0
这将得到您正在查找的正整数的结果:
输出结果如下:
|
27
0
我认为这对你有帮助。我已经用C语言编写了下面的程序。
|
28
-1
这对我有用,但没有尝试处理否定
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |