Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
Vala 转换为整数vs数学地板_Vala - Fatal编程技术网

Vala 转换为整数vs数学地板

Vala 转换为整数vs数学地板,vala,Vala,使用cast to int而不是Math.floor将浮点/双精度值转换为整数是否节省 var scale = 1.5; int foo1 = (int)scale; int foo2 = Math.floor(scale); 当Vala代码被翻译成C时,这个问题与 TL;DR:是的,它是安全的,但是当给出负数时,Math.floor和float/double铸造的结果是不同的 请注意,Math.floor是GLib库的一部分,因此在POSIX配置文件中不可用。在这种情况下,case to I

使用cast to int而不是Math.floor将浮点/双精度值转换为整数是否节省

var scale = 1.5;
int foo1 = (int)scale;
int foo2 = Math.floor(scale);

当Vala代码被翻译成C时,这个问题与

TL;DR:是的,它是安全的,但是当给出负数时,Math.floor和float/double铸造的结果是不同的


请注意,Math.floor是GLib库的一部分,因此在POSIX配置文件中不可用。

在这种情况下,case to Int和Math.floor都将返回整数值。如果x=3.5,则两个函数都将在输出中返回3Cast to int是一个将任何数据类型的变量转换为整数类型的函数,另一方面Math.floor函数只将十进制数转换为整数,而不转换数据类型。但在负值的情况下,结果会有所不同,因为强制转换为Int接近于零,而Math.floor接近于负无穷大。因此,从这个角度来看,如果您正在处理实数(正数和负数),那么使用Cast to Int而不是Math.floor来获得精确输出是不安全的