出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[1831] VBScript の Round関数にはバグがあります
投稿者:北岳さん 2002/03/08 7:00:32
round関数を WIN98+PWS(VBScript 5.5.6330)にて検証した結果です。
(1)は整数、(2)〜(4)は実数を得る関数。
 
--------------------------------
■(1) VBSの INT(x) 関数【正常】
<% for x=-9.5 to 9.5 step 1
response.write INT(x) & ","
next %>
 
結果:-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,
小さい方の整数にするという定義内で正常。
 
--------------------------------
■(2) VBSの ROUND(x,y) 関数【異常】
<% for x=-9.5 to 9.5 step 1
response.write round(x) & "," '(a)
'response.write round(x,0) & "," '(b)
next %>
 
結果(a)(b)とも:-10,-8,-8,-6,-6,-4,-4,-2,-2,0,0,2,2,4,4,6,6,8,8,10,
???(絶句)
 
--------------------------------
■(3) EXCEL 95&97 の ROUND(x,y) 関数【正常】
セル(A1)に-9.5、(A2)に-8.5・・・(A20)に9.5、
セル(B1)に =@ROUND(A1,0) ・・・(B20)に =@ROUND(A20,0)
 
結果:-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10
しっかり四捨五入しています。
 
--------------------------------
□(4') 前回アップの自作 ROUNDX(x,y) 関数【異常】
結果:-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,
 
済みません、正数は五捨六入になっていました。
(桁揃えのためVBで5年以上使っていましたが、全然気がつかなんだ・・・)
 
--------------------------------
■(4) 修正版 ROUNDX(x,y) 関数【正常(のつもりです)】
 
<%
Function roundx(X, Y)
z = X * 10 ^ Y
a = Int(X * 10 ^ Y)
If x>=0 and z - a >= 0.5 Then a = a + 1
if x<0 and z - a > 0.5 then a = a + 1
roundx = a / 10 ^ Y
End Function
%>
 
結果:-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10
(3)EXCEL のround(x,y)関数 と同じ結果が得られました。
 
--------------------------------------------
ご指摘頂いた
[1762]「↑小数点以下を四捨五入したい」 かすみさん 2002/02/27
のスレッドの喜平さんにお礼申し上げます。

VBScript の Round関数にはバグがあります   北岳さん [2002/03/08 7:00:32] [1831]
  Re:VBScript の Round関数にはバグがあります   北岳さん [2002/03/08 9:02:12] [1832]
  Re:VBScript の Round関数にはバグがあります   arikさん [2002/03/08 11:45:02] [1833]
    Re:VBScript の Round関数にはバグがあります   arikさん [2002/03/08 16:15:53] [1836]
  Re:VBScript の Round関数にはバグがあります   たまコさん [2002/03/08 12:25:47] [1834]
  VBScript の Round関数は使い方注意   北岳さん [2002/03/08 15:57:50] [1835]


TreeBBS For ASP V.0.1.3
Program By YasNet