╋艺 镇╋╋网站网络|程序语言|Flash╋┣◇网站建设&Web语言 → asp 取整函数int 奇怪的问题


  共有22097人关注过本帖树形打印复制链接

主题:asp 取整函数int 奇怪的问题

美女呀,离线,留言给我吧!
admin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27521 威望:0 精华:7 注册:2003/12/30 16:34:32
韩国 change 排练舞蹈  发帖心情 Post By:2010/9/3 11:57:55 [只看该作者]

用fix和int都不能得到正确的整数,我的目的是抛弃小数,但是  
<br>
    int:   <%=int(2.3*2680)%>  
  
 <br>
    fix:    <%=fix(2.3*2680)%>  
得到的结果都是6163,而不是实际的6164 
问题补充:
round 会产生四舍五入,所以无法使用


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
美女呀,离线,留言给我吧!
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27521 威望:0 精华:7 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/9/3 11:58:10 [只看该作者]

微软有病,你知道下面的程序结果是什么吗?

<br> int: <%=int(23*268)%>
<br> int: <%=int(2.3*2680)%>
<br> int: <%=int(0.23*26800)%>


输出结果是:
int: 6164
int: 6163
int: 6164

为什么2.3*2680进行INT取整会被吃一个?





这里提出一个问题,使用INT、FIX对表达式计算结果进行取整,可能会出现你意料之外的问题,因为计算机内部对小数的表示是使用的定点的科学记数法,比如2.3*2680的计算结果可能是6.1639999E+0003,也就是6163.99999,这时候使用INT进行取整可能会出错,稳妥的取整方式是先四舍五入到小数点后面一位,然后再取整,方法如下:

<br> int: <%=int(round(2.3*2680*10)/10)%>

乘以10进行四舍五入之后再除以10,表示四舍五入代小数点后面一位,然后再INT或者FIX取整,这样就不会出现问题了。


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
美女呀,离线,留言给我吧!
admin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27521 威望:0 精华:7 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/9/3 13:24:14 [只看该作者]

下表是三个函数取值的对比:


X INT(X) CINT(X) FIX(X)

3.26 3 3 3

3.76 3 4 3

-3.26 -4 -3 -3

-3.76 -4 -4 -3
另外也可以试一下:round()函数


  
“艺镇”官方站:www.zyzsky.com QQ群:1221854  回到顶部