为什么matlab和java的ceil功能有所不同?

时间:2015-01-26 03:28:45

标签: 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函数的结果?提前谢谢

2 个答案:

答案 0 :(得分:4)

要回答“如何在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函数的某些类型转换有关。

答案 1 :(得分:2)

您正在执行整数数学运算。你想要像

这样的东西
int H = 7;
double Hp = Math.ceil(H / 2.0);
System.out.println(Hp);

输出

4.0

如果你期望3,你需要像

这样的东西
int H = 7;
int Hp = (int) Math.floor(H / 2.0);
System.out.println(Hp);

输出

3
相关问题