地板要舍入非整数的函数代码
8视图(30天)
显示旧的评论
接受的答案
约翰D 'Errico
2021年7月8日
编辑:约翰D 'Errico
2021年7月8日
如果你想要一个数学表达式,用MATLAB编写(它不会被写在实际代码)这可能工作:
myfloor = @ (x)双(int64 (x));
myfloor (2.3)
后将浮点数转换为整数,然后它需要作为一个双返回。但是,代码会更好写返回一个数字相同的浮点类,因为这将为单精度输入失败。,对于已经一个整数类的输入,它不应该将结果转换成双。最后,对负数代码将会失败,因为地板(-2.3)3。
地板(-2.3)
myfloor (-2.3)
负数圆楼。一个简单的函数,它将有效地工作的任何迹象是:
mybetterfloor = @ (x) x - mod (x, 1);
地板([-2.3 - 2.3])
mybetterfloor ([-2.3, 2.3])
如您所见,这段代码轮为负数,地板上一样。
x = randn (10000);
(地板(x) = = mybetterfloor (x))
没有显式类型转换到另一个类的代码,所以它应该为任何浮点或整数类工作。是如何实现在编译C ?当然不是。