我在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/