java - 为什么matlab和java的ceil函数不同?

标签 java matlab

我在JAVA中使用ceil函数。我想将该函数与 MATLAB 进行比较。但是,当我在 MATLAB 中使用它时,它返回不同的值。例如,我有 H=7,我在 JAVA 中使用该代码

int H=7;
double Hp= Math.ceil(H/2);

它返回 3。 不过,我在 MATLAB 中使用该函数

Hp= ceil(H/2);

它返回 4。这里的真实情况是什么?如何在JAVA中实现类似ceil函数的结果?预先感谢您

最佳答案

回答“如何在JAVA中实现类似ceil函数的结果?”,可以使用idivide对参数之一进行整数转换:

H  = 7;
Hp = idivide(H,int8(2));

默认情况下,这将执行除法并将小数部分舍入为 0。 ceil 函数是不必要的,因为整数除法会生成整数。您可以将其包装在 ceil 中,但什么也不会发生。

<小时/>

注意:需要使用idivide,因为 MATLAB 的整数算术实现(在我的经验中相当违反直觉)实际上将整数除法的小数部分四舍五入为最接近的整数(至少在R2014b):

Hp = int8(7) /int8(2) ; % 3.5 float => 4 integer
Hp = int8(34)/int8(10); % 3.4 float => 3 integer

我怀疑这与 rdivide 函数的某些类型转换有关。

关于java - 为什么matlab和java的ceil函数不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144423/

相关文章:

MATLAB 单元测试函数调用

algorithm - MATLAB 函数可以将数学函数作为输入吗?

java - 如何解决 "Keystrokes is not abstract and does not override ab. method"

java - 如何禁用按钮一天

math - 像 Mathematica 这样的程序是如何绘制图形的?我该如何制作这样的程序?

arrays - 在matlab中总结每个月的每日值

matlab - 在 Matlab 中使用插值返回函数

java - Java中的日期算术,从今天开始加上3个月

java - 通过 Jenkins 作业进行 maven 部署的策略

java - G1 full gc 时间很多时间