Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么matlab和java的ceil函数不同?_Java_Matlab - Fatal编程技术网

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

为什么matlab和java的ceil函数不同?,java,matlab,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函数的结果?提前感谢您您正在执行整数运算。你想要像这样的东西 int H = 7; double Hp = Math.ce

我正在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函数的结果?提前感谢您

您正在执行整数运算。你想要像这样的东西

int H = 7;
double Hp = Math.ceil(H / 2.0);
System.out.println(Hp);
int H = 7;
int Hp = (int) Math.floor(H / 2.0);
System.out.println(Hp);
输出为

4.0
3
如果您希望
3
,您将需要

int H = 7;
double Hp = Math.ceil(H / 2.0);
System.out.println(Hp);
int H = 7;
int Hp = (int) Math.floor(H / 2.0);
System.out.println(Hp);
输出为

4.0
3

您正在执行整数运算。你想要像这样的东西

int H = 7;
double Hp = Math.ceil(H / 2.0);
System.out.println(Hp);
int H = 7;
int Hp = (int) Math.floor(H / 2.0);
System.out.println(Hp);
输出为

4.0
3
如果您希望
3
,您将需要

int H = 7;
double Hp = Math.ceil(H / 2.0);
System.out.println(Hp);
int H = 7;
int Hp = (int) Math.floor(H / 2.0);
System.out.println(Hp);
输出为

4.0
3
要回答“如何在JAVA中实现类似ceil函数的结果?”,您可以对其中一个参数使用整数强制转换:

H  = 7;
Hp = idivide(H,int8(2));
默认情况下,这将执行除法并将小数部分向0舍入。
ceil
函数是不必要的,因为整数除法生成整数。您可以将其包装在
cell
中,但不会发生任何事情


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

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

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

H  = 7;
Hp = idivide(H,int8(2));
默认情况下,这将执行除法并将小数部分向0舍入。
ceil
函数是不必要的,因为整数除法生成整数。您可以将其包装在
cell
中,但不会发生任何事情


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



我怀疑这与通过
rdivide
函数进行的某种类型转换有关。

H/2
还是Java中的3和Matlab中的3.5?在MATLAB中尝试
H/2.0
声明
H=7
,自动将数字类型提升为
double
。事实上,除非您专门更改数字的数据类型,否则所有数字都将创建为
double
。因此,执行
ceil(H/2)
将产生
4.0
,正如
H/2=3.5
@rayryeng:谢谢。如何实现类似于JAVA结果(3)的结果。是ceil(H/2)-1吗?@user8430-你可以这么做。。。或者您可以使用
地板
<代码>双Hp=数学楼层(H/2.0)?但是,如果您决定将该定义与
ceil
@user8430
ceil
一起使用,当
H
为负时,用1减法时要小心,
floor
为四舍五入。它们是相反的。
H/2
是否可能在Java中给出3,在Matlab中给出3.5?在MATLAB中尝试
H/2.0
声明
H=7
,自动将数字类型提升为
double
。事实上,除非您专门更改数字的数据类型,否则所有数字都将创建为
double
。因此,执行
ceil(H/2)
将产生
4.0
,正如
H/2=3.5
@rayryeng:谢谢。如何实现类似于JAVA结果(3)的结果。是ceil(H/2)-1吗?@user8430-你可以这么做。。。或者您可以使用
地板
<代码>双Hp=数学楼层(H/2.0)?但是,如果您决定将该定义与
ceil
@user8430
ceil
一起使用,当
H
为负时,用1减法时要小心,
floor
为四舍五入。它们是对立的。如何实现结果3?因为我的问题是如何在JAVA中实现类似ceil函数的结果?@user8430-为什么要3?这与
ceil
@user8430的定义相反,您的问题是正确的,答案是4(对于
ceil
)。。。如果你期望3,你需要使用
floor
。实际上,3是我期望的结果。我在java中使用的函数类似于上面的函数。现在,我想把它转换成matlab,然后在把它传递给ceil之前,你必须强制除法为整数,所以它或多或少是ceil(floor(h/2))。如何得到结果3?因为我的问题是如何在JAVA中实现类似ceil函数的结果?@user8430-为什么要3?这与
ceil
@user8430的定义相反,您的问题是正确的,答案是4(对于
ceil
)。。。如果你期望3,你需要使用
floor
。实际上,3是我期望的结果。我在java中使用的函数类似于上面的函数。现在,我想把它转换成matlab,然后在把它传递给ceil之前,你必须强制除法为一个整数,所以它或多或少是ceil(floor(h/2))。