Created on | Updated on
フォローする

MELで四捨五入

残念ながらMELには四捨五入を行う関数は用意されていませんが、floorを応用して実現することができます。
例えば小数点以下2桁で丸めたい場合は、元の値に0.005を加算→結果を100倍→floorで小数点以下を切り捨て→100で割る とします。

下記のサンプルでは $MQfloatに元の値、$MQcountに少数手以下の桁数を代入してこれを行っています。

float $MQfloat = 0.1234567891234;
int $MQcount = 4;

string $fS ="0.",$cS = "1";
int $i;
for($i=0;$i<$MQcount;$i++){
     $fS = $fS + "0";
     $cS = $cS + "0";
}
float $MQres = $MQfloat + float($fS + "5");
$MQres = `floor($MQres*float($cS))` / float($cS);

print($MQfloat +" > "+ $MQres +"\n");
Result:0.1234567891 > 0.1235