我想确保在必要时整数除以整数.有比这更好的方法吗?有很多铸件正在进行中.:-)
(int)Math.Ceiling((double)myInt1 / myInt2)
Run Code Online (Sandbox Code Playgroud) 好的 - 我几乎不好意思在这里张贴这个(如果有人投票结束我会删除),因为这似乎是一个基本问题.
这是在C++中舍入到数字的倍数的正确方法吗?
我知道还有其他与此相关的问题,但我特别感兴趣的是知道在C++中执行此操作的最佳方法是什么:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
}
int roundDown = ( (int) (numToRound) / multiple) * multiple;
int roundUp = roundDown + multiple;
int roundCalc = roundUp;
return (roundCalc);
}
Run Code Online (Sandbox Code Playgroud)
更新:对不起我可能没有明确意图.这里有些例子:
roundUp(7, 100)
//return 100
roundUp(117, 100)
//return 200
roundUp(477, 100)
//return 500
roundUp(1077, 100)
//return 1100
roundUp(52, 20)
//return 60
roundUp(74, 30)
//return 90
Run Code Online (Sandbox Code Playgroud)
编辑:感谢所有的回复.这是我的目的:
int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
} …Run Code Online (Sandbox Code Playgroud) Math.Ceiling返回double因为double可能存储更大的数字.但是,如果我确定该int类型能够存储结果我应该如何转换?施放是否安全(int) Math.Ceiling(...?
我想返回大于或等于整数除法的最小整数值.所以我用过math.ceil,但无法获得我想要的价值.
package main
import (
"fmt"
"math"
)
func main() {
var pagesize int = 10
var length int = 43
d := float64(length / pagesize)
page := int(math.Ceil(d))
fmt.Println(page)
// output 4 not 5
}
Run Code Online (Sandbox Code Playgroud)
http://golang.org/pkg/math/#Ceil
http://play.golang.org/p/asHta1HkO_
怎么了?谢谢.
我想要一些C++中的东西,它允许我使用指定的舍入行为进行有效的整数除法,如下所示:
div_down(-4,3) ==> -2
div_up(4,3) ==> 2
div_to_zero(-4,3) ==> -1
div_to_nearest(5,3) ==> 2
Run Code Online (Sandbox Code Playgroud)
我希望它能够在编译时检测目标机器的行为并生成适当的最佳实现.类似于模数的东西也会很好,在编译时抽象出负操作数的未定义行为.
这存在吗?
如果没有,有什么好办法呢?我可以想到几种可能的方法:
在 C 中可以进行楼层划分,例如:
int floor_div(int a, int b) {
int d = a / b;
if (a < 0 != b < 0) { /* negative output (check inputs since 'd' isn't floored) */
if (d * a != b) { /* avoid modulo, use multiply instead */
d -= 1; /* floor */
}
}
return d;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎可以简化。
在 C 中有没有更有效的方法来做到这一点?
请注意,这几乎与这个问题相反:C/C++ 中整数除法的快速上限
最近,我看到了这个问题,该问题询问如何使用ceil四舍五入(向正无穷大)除以整数。不幸的是,答案要么不适用于有符号整数,要么存在下溢和溢出问题。
例如,接受的答案有这个解决方案:
q = 1 + ((x - 1) / y);
Run Code Online (Sandbox Code Playgroud)
当x为零时,存在下溢,~0结果不正确。
如何为有符号和无符号整数正确实现ceil舍入,以及如何实现其他舍入模式,如floor(向负无穷大)和向外(远离零)?
在C中,我如何使1200/500 = 3.
我正在做家庭作业.
运输计算器:Speedy Shipping公司将根据您的包装重量以及您送包裹的距离来运送您的包裹.他们只会运送重达10磅的小包装.您需要有一个程序来帮助您确定他们将收取多少费用.费用基于每运送500英里.它们不是按比例分配的,即600英里与900英里的费用相同.
这是他们给你的表:
Package Weight--------------------------Rate per 500 miles shipped
2 pounds or less------------------------$1.50
More than 2 but not more than 6---------$3.70
More than 6 but not more than 10--------$5.25
这是一个测试用例.
测试用例数据:
重量:5.6磅
英里:1200英里
预期成绩:
您的运费是11.10美元
我的答案一直持续到7.40