如何在系统间缓存中截断除法的结果?

时间:2015-11-19 08:35:52

标签: intersystems-cache

我想得到截断的整数。

例如,做这个部门:5/3, 我希望结果为1。

3 个答案:

答案 0 :(得分:0)

简单的方法是使用$piece

write $piece(5/3,".",1)
1

或获取小数点分隔符

set  decimalSeparator=##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")
write $piece(5/3,decimalSeparator,1)
1

答案 1 :(得分:0)

有一个$fnumber函数可以删除浮动部分,诀窍是保留数字而不需要任何额外的格式,为此你可以使用""作为格式说明符。

write $fnumber(5/3,"",0)
2

答案 2 :(得分:0)

使用$System.SQL.Floor

  

classmethod FLOOR(val As%Library.Numeric =“”)as%Library.Integer

     

FLOOR是一个数字函数,它返回小于或的最大整数   等于给定的数字表达式

     

$ SYSTEM.SQL.FLOOR(数字-EXP)

     

数字-EXP

     

要计算其最低限额的数字。

我没有做任何性能测试或其他任何事情,但这似乎正是您正在寻找的。