記事
· 2025年3月31日 2m read

小数桁数を指定して切り上げ・切り捨ての処理を行う方法

これは、InterSystems FAQ サイトの記事です。
 

小数点桁数を指定しない単純な整数への切り上げ・切り捨ては、それぞれ、以下の関数で実行できます。

(SQL関数)

切り上げ:CEILING
切り捨て:FLOOR

(ObjectScript関数)

切り上げ: $system.SQL.Functions.CEILING()
切り捨て: $system.SQL.Functions.FLOOR()

USER>write $system.SQL.Functions.CEILING(168.5)
169
USER>write $system.SQL.Functions.FLOOR(168.5)
168

※バージョン2021.1以前は以下のメソッドを使用します。

 切り上げ: $system.SQL.CEILING()
 切り捨て: $system.SQL.FLOOR()


小数桁数を指定して切り上げ・切り捨てを行いたい場合は、2つの関数を組み合わせ、以下のようなメソッドを作成して対応します。

Class Sample.Utility Extends %RegisteredObject
{

ClassMethod Floor(val As %Numeric, scale As %Integer) As %Numeric [ Language = objectscript ]
{
	Set multi=$select(scale>0:scale-1,1:scale) 
	Set tmpval=$system.SQL.Functions.FLOOR(val*(10**multi)) 
	Quit tmpval*(10**-multi)
}

ClassMethod Ceiling(val As %Numeric, scale As %Integer) As %Numeric [ Language = objectscript ]
{
	Set multi=$select(scale>0:scale-1,1:scale) 
	Set tmpval=$system.SQL.Functions.CEILING(val*(10**multi)) 
	Quit tmpval*(10**-multi)
}

}


【実行例】

0.122 を小数点第3位で切り上げる

USER>write ##class(Sample.Utility).Ceiling(0.122,3)
.13


0.122 を小数点第3位で切り捨てる

 USER>write ##class(Sample.Utility).Floor(0.122,3)
.12
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください