草庐IT

c++ - 将 `std::floor()` 和 `std::ceil()` 转换为整数类型是否总是给出正确的结果?

我很怀疑这些函数之一可能会给出这样的错误结果:std::floor(2000.0/1000.0)-->std::floor(1.999999999999)-->1orstd::ceil(18/3)-->std::ceil(6.000000000001)-->7这样的事情会发生吗?如果确实存在这样的风险,我打算使用下面的功能来安全地工作。但是,这真的有必要吗?constexprlongdoubleEPSILON=1e-10;intmax_tGuaranteedFloor(constlongdouble&Number){if(Number>0){returnstatic_cast(std:

java - Math.ceil 和 Math.floor 返回相同的值

我有一个双(23.46)使用Math.ceil和Math.floor方法并将我的double解析为这些方法,我得到返回给我的相同值,即23...我希望将其四舍五入为24..换句话说,如果我有一个15.01的double,它仍应四舍五入为16...我该怎么做? 最佳答案 无法重现:publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Math.ceil(23.46));//Prints24System.out.println(Math.floor(2

java - Math.ceil 和 Math.floor 返回相同的值

我有一个双(23.46)使用Math.ceil和Math.floor方法并将我的double解析为这些方法,我得到返回给我的相同值,即23...我希望将其四舍五入为24..换句话说,如果我有一个15.01的double,它仍应四舍五入为16...我该怎么做? 最佳答案 无法重现:publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Math.ceil(23.46));//Prints24System.out.println(Math.floor(2

java - 为什么 Math.ceil 返回一个 double 值?

当我调用Math.ceil(5.2)时,返回的是double6.0。我的自然倾向是认为Math.ceil(doublea)会返回一个long。来自文档:ceil(doublea)Returnsthesmallest(closesttonegativeinfinity)doublevaluethatisnotlessthantheargumentandisequaltoamathematicalinteger.但是当结果是整数时,为什么要返回double而不是long呢?我认为理解它背后的原因可能有助于我更好地理解Java。它还可以帮助我弄清楚我是否会通过转换为long给自己带来麻烦,例

java - 为什么 Math.ceil 返回一个 double 值?

当我调用Math.ceil(5.2)时,返回的是double6.0。我的自然倾向是认为Math.ceil(doublea)会返回一个long。来自文档:ceil(doublea)Returnsthesmallest(closesttonegativeinfinity)doublevaluethatisnotlessthantheargumentandisequaltoamathematicalinteger.但是当结果是整数时,为什么要返回double而不是long呢?我认为理解它背后的原因可能有助于我更好地理解Java。它还可以帮助我弄清楚我是否会通过转换为long给自己带来麻烦,例

c++ - 寻找一个 constexpr ceil 函数

由于std:ceil在VisualStudio2015中都不是constexpr,我正在寻找它的constexpr实现可以使用编译时-收效甚微。感谢任何帮助。 最佳答案 由于VisualStudio2015的编译器仍然不允许constexpr函数具有if条件和变量,我重写了Jarod42的解决方案并删除了它们:constexprint32_tceil(floatnum){return(static_cast(static_cast(num))==num)?static_cast(num):static_cast(num)+((num

C++保留小数点后两位(floor&ceil&round)详解

 C++四舍五入保留小数点后两位 示例#includeusingnamespacestd;intmain(){ doublei=2.235687; doublej=round(i*100)/100; cout 运行结果函数解析见下面 1、floor函数功能:把一个小数向下取整   即就是如果数是2.2,那向下取整的结果就为2.000000原型:doublefloor(doubex);  参数解释:    x:是需要计算的数示例#includeusingnamespacestd;intmain(){doublei=floor(2.2);doublej=floor(-2.2);cout运行结果2、

java - 为什么Java中没有ceil(float)?

假设我想在Java中将float舍入为int。例如,roundUp(0.2)=1roundUp(0.7)=1roundUp(1.3)=2...我想调用Math.ceil和Math.round来实现,但是java.lang.Math没有提供天花板(float)。它只提供ceil(double)。所以我的float被默默地提升为double,ceil(double)返回double和round(double)返回long而我需要将float舍入为int(不是long)。现在我想知道为什么java.lang.Math只有ceil(double)而没有ceil(float)。

python - 可能的 math.ceil() 错误

在Windows7Python3.2上,以下内容:print(int(math.ceil(24/10)))按预期给了我“3”。在带有ActivePython2.5的WindowsServer上,它给了我“2”。这是什么问题,我该如何解决?这是我的原始代码:number_of_pages=int(math.ceil(number_of_rows/number_of_rows_per_page))谢谢,巴里 最佳答案 Python2.x使用截断除法,所以24/10的答案是2。2的ceil仍然是2。修复方法是将其中一个操作数转换为floa

python - 没有 Math 模块的 Python 3 中的 Ceil 和 floor 等效?

我需要在不使用importmath的情况下设置ceil和floor3/2结果(1.5)。math.floor(3/2)=>3//2math.ceil(3/2)=>?好的,问题来了:对所有数字求和15+45+15+45+15...有N个项目。sum=(n//2)*5+int(n/2)*15 最佳答案 >>>3/21.5>>>3//2#floor1>>>-(-3//2)#ceil2 关于python-没有Math模块的Python3中的Ceil和floor等效?,我们在StackOverfl