1、int是向0取整,比如:19会变成1,-19会变成-1
floor是向下取整,比如:18会变成1,-11会变成-2(注意这点和int不同)
2、返回值类型也有区别。以下是floor的原型:
float floor( float arg );
double floor( double arg );
long double floor( long double arg );
double floor( Integral arg ); (C++11)
由此可见,floor返回的值是浮点型,而(int)返回的值是整型。
2:00:00转换成数值是0083333333……天,不是008天,乘以24,也就是换算为小时就是2小时,而不是192小时。
不过由于存在浮点小数运算误差,这样的公式有时会出现错误。所以要用ROUND函数修正。
楼上的想法是对的,但Int函数在这里不知是否能用,用Floor函数是一定可以的,即
UPDATE 表1 SET [表1][字段1] = Floor([字段1]100)/100
PS:Floor函数是向下取整函数,比如
Floor(12378100)/100
=Floor(12378)/100
=123/100
=123
C语言有以下几种取整方法:1、直接赋值给整数变量。如:int i = 25; 或 i = (int) 25;这种方法采用的是舍去小数部分,可以用于你的问题。2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的C编译器有关。3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:floor(25) = 2floor(-25) = -34、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:ceil(25) = 3ceil(-25) = -2floor()是向负无穷大舍入,floor(-25) = -3;ceil()是向正无穷大舍入,ceil(-25) = -2。floor函数可以用于你的问题。hyh的意见:int x,a,b,c,d;a=x/1000;b=x%1000/100;
floor函数,其功能是“向下取整”,或者说“向下舍入”、“向零取舍”,即取不大于x的最大整数,与“ 四舍五入 ”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个整数值。 [1]
语法
FLOOR(number, significance)
Number 必需。要舍入的数值。
Significance 必需。要舍入到的倍数。
说明
将参数 number 向下舍入(沿绝对值减小的方向)为最接近的 significance 的倍数。
如果任一参数为非数值型,则 FLOOR 将返回错误值 #VALUE!。
如果 number 的符号为正,且 significance 的符号为负,则 FLOOR 将返回错误值 #NUM!。
示例
FLOOR函数在Excel中的示例如下:
公式说明结果
=FLOOR(37,2):将 37 沿绝对值减小的方向向下舍入,使其等于最接近的 2 的倍数2
=FLOOR(-25, -2):将 -25 沿绝对值减小的方向向下舍入,使其等于最接近的 -2 的倍数-2
=FLOOR(25, -2):返回错误值,因为 -25 和 2 的符号不同#NUM!
=FLOOR(158, 01):将 158 沿绝对值减小的方向向下舍入,使其等于最接近的 01 的倍数15
=FLOOR(0234, 001):将 0234 向下舍入到最接近的 001 的倍数023
excel中的ceiling函数,是将数值向上舍入到指定基数最接近的倍数。
ceiling函数的语法见下图。
此函数有两个参数,第一个参数number:我们要进行舍入的数值;
第二个参数significance:要舍入到的倍数。
步骤阅读
数的情况也是如此,只不过返回有可能也是小数而已,参看下图:
如果第一个、第二个参数都为负数,道理也是一样的,只是返回结果是负数(负数最接近的倍数也是负数)。如下图所示:
以上是两个参数符号相同的情况,如果两个参数符号不同,函数将返回错误值
#NUM!。如下图所示,分别列举了两种都返回错误值的情况。
c语言标准库中有名为floor的函数。
函数的声明
double floor(double x)
参数: x-- 这是浮点类型的值
返回值: 返回小于或等于x的最大整数值
使用floor函数需要额外包含#include <mathh>头文件
示例
#include <stdioh>
#include <mathh>
int main ()
{
float val1, val2, val3, val4;
val1 = 16;
val2 = 12;
val3 = 28;
val4 = 23;
printf("Value1 = %1lf\n", floor(val1));
printf("Value2 = %1lf\n", floor(val2));
printf("Value3 = %1lf\n", floor(val3));
printf("Value4 = %1lf\n", floor(val4));
return(0);
}
运行将产生以下结果:
Value1 = 10
Value2 = 10
Value3 = 20
Value4 = 20
以上就是关于C/C++中使用int强制类型转换和floor函数有区别吗全部的内容,包括:C/C++中使用int强制类型转换和floor函数有区别吗、excel函数 floor 关于它算加班时间的问题、Access数据库取消四舍五入功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)