在intersystems缓存中,有什么最好的方法来避免分割的结果呢?
谢谢。
发布于 2015-11-18 11:52:09
有一些函数用来格式化数字,如果有必要的话,它们也会把它围起来。
$justify(表达式、宽度、小数点)- Caché轮或垫子将表达式中的小数位数加到此值。
write $justify(5/3,0,3)
1.667$fnumber(编号,格式,十进制)
write $fnumber(5/3,"",3)
1.667$number(num,格式,最小,最大)
write $number(5/3,3)
1.667$normalize(num,scale)
w $normalize(5/3,3)
1.667你只需要选择哪一个更适合你。他们做不同的事情,但结果可能是一样的。
发布于 2016-05-12 19:04:19
在标准腮腺炎( Cache对象脚本向后兼容)中,有三个与“除法”相关的操作符。第一个是单字符"/“(即正斜杠)。这是实数除法。5/2是2.5,10.5/5是2.1等等。这需要两个数字(每个数字可能包括一个小数点和一个分数),并返回一个可能带有一个分数的数字。要记住的一件有用的事情是,这种数字除法会产生尽可能简单的结果。如果小数点前面有像0007这样的前导零,它将把数字处理为7。如果小数点后面有尾随零,它们也会被裁剪。因此,2.000被裁剪为2(注意没有小数点),00060.0100将被裁剪为60.01。
在过去,许多实现者会保证3/3永远是1(而不是.99999),并且数学是按照所能做的那样做的。这现在不是重点,但过去有专门的库来处理二进制编码的十进制(BCD),以保证几乎不可能生成一分钱的分数。
下一个除法运算符是单字符"\“(即向后斜杠)。这个操作符被一些人称为整数除法或"div“。它将进行除法并丢弃任何剩余的部分。有趣的是,它总是会产生一个整数,但是输入不必是一个整数。所以10\2是5,但23\2.3是10,23.3\2.33,如果还剩下一个分数,它就会下降。所以23.3,2.3也是10。全除法运算符会给你很多分数。23.3/2.3是10.130434等等。
最后的除法操作符是余数(或"mod“或”mod“),由单个字符"#”(有时称为散列、磅号或八进制)表示。为了得到这个问题的答案,计算整数除法"/“,计算整数除法时遗留下来的就是结果。在23\2的例子中,答案是11,剩余值是1,所以23#2是1 ad 23.3#2.3 is .3,您可能会注意到(number#divisor)+(( number \divisior)*除数)总是要返回原来的数字。
希望这有助于您在编程中明确这一想法。
https://stackoverflow.com/questions/33777473
复制相似问题