原创_关于鉴定指定值是否包含小数的方法。_人力资产
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 3  1/1   1  
作者
内容
exedeath  [个人空间]


注册  2008-10-31
发贴数  29
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#1»发布于2013-05-20 16:36

     鉴于请假最底为半天,即0.5天,自己在整合需要的取数,但考虑到如果是小数的话可能会影响最后的结果。 
苦于在官方文档中找不到IS_FLOAT()类似的函数使用。于是自己想了个折衷的办法。 
    见下面的脚本: 
//测定指定值是否是小数 
msg("1122的长度是:"+strlen("1122")); 
msg("1122.5的长度是:"+strlen("1122.5")); 
int temp9,temp12; 
float temp10; 
string temp11; 
temp10=1122.5; 
temp9=strlen(temp10); 
temp12=temp9-2; 
temp11=str_get_sub(temp10,4,2); 
msg("1122.5的最后两位是:"+temp11); 
if(temp11==".5") 
   { 
       msg("当前取值是包含有半天假的!"); 
   } 
 
    思路:先取得指定数的长度,再根据我们需要的最后两位计算出需要去除的位数,用截取函数取最后两位并与指定值进行比较,确定指定数是否为小数。


        


exedeath  [个人空间]


注册  2008-10-31
发贴数  29
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#2»发布于2013-05-20 16:57

     现在有个问题呀,我以为FLOAT返回的只是.x,但实际上返回的是.x0000000的格式,导致取最后两位的想法不能得到需要的答案。


        


exedeath  [个人空间]


注册  2008-10-31
发贴数  29
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#3»发布于2013-05-20 17:06

    换了个思路,用str_pos在指定数值中查询“.5”的位置,如果返回值大于等于0则判定指定值为小数,如果返回值小于0(即-1)则判定不包含半天离岗。 
int temp9,temp_xs; 
string temp11; 
msg("本次查询到的请假天数为:"+qjts_cxjg); 
temp9=str_pos(qjts_cxjg,".5"); 
msg("本次查询到的位置为:"+temp9); 
if(temp9>=0) 
  { 
    temp_xs=1; 
    qjts_tz=0.5; 
    sjqj_jsrq=get_last_date(sjqj_jsrq); 
    msg("当前取值是包含有半天假的"+nl()+"该天数是:"+qjts_cxjg+"小数位置:"+temp9); 
  }


        



 3  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]