相关疑难解决方法(0)

如何确保整数除法总是四舍五入?

我想确保在必要时整数除以整数.有比这更好的方法吗?有很多铸件正在进行中.:-)

(int)Math.Ceiling((double)myInt1 / myInt2)
Run Code Online (Sandbox Code Playgroud)

c# math

235
推荐指数
5
解决办法
6万
查看次数

C++:向上舍入到最接近的数字的倍数

好的 - 我几乎不好意思在这里张贴这个(如果有人投票结束我会删除),因为这似乎是一个基本问题.

这是在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)

c++ algorithm rounding

155
推荐指数
9
解决办法
11万
查看次数

如何将Math.Ceiling结果转换为int?

Math.Ceiling返回double因为double可能存储更大的数字.但是,如果我确定该int类型能够存储结果我应该如何转换?施放是否安全(int) Math.Ceiling(...

c#

33
推荐指数
4
解决办法
6万
查看次数

golang - ceil函数就像php一样?

我想返回大于或等于整数除法的最小整数值.所以我用过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_

怎么了?谢谢.

go ceil

17
推荐指数
4
解决办法
1万
查看次数

C++函数用于整数除法,具有良好定义的舍入策略

我想要一些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++ c++11

8
推荐指数
3
解决办法
3167
查看次数

C/C++ 中带符号整数除法的快速下限

在 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++ 中整数除法的快速上限

c integer-division floor-division

6
推荐指数
3
解决办法
2861
查看次数

在 C++ 中使用 floor、ceil 和向外舍入模式划分整数

最近,我看到了这个问题该问题询问如何使用ceil四舍五入(向正无穷大)除以整数。不幸的是,答案要么不适用于有符号整数,要么存在下溢和溢出问题。

例如,接受的答案有这个解决方案:

q = 1 + ((x - 1) / y);
Run Code Online (Sandbox Code Playgroud)

x为零时,存在下溢,~0结果不正确。

如何为有符号和无符号整数正确实现ceil舍入,以及如何实现其他舍入模式,如floor(向负无穷大)和向外(远离零)?

c++ math integer rounding division

3
推荐指数
1
解决办法
959
查看次数

在c中,我如何使1200/500 = 3

在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

c ceil

0
推荐指数
2
解决办法
1117
查看次数

标签 统计

c++ ×3

c ×2

c# ×2

ceil ×2

math ×2

rounding ×2

algorithm ×1

c++11 ×1

division ×1

floor-division ×1

go ×1

integer ×1

integer-division ×1