首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绕过intersystems缓存中的除法结果?

如何绕过intersystems缓存中的除法结果?
EN

Stack Overflow用户
提问于 2015-11-18 10:24:25
回答 2查看 850关注 0票数 0

在intersystems缓存中,有什么最好的方法来避免分割的结果呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-18 11:52:09

有一些函数用来格式化数字,如果有必要的话,它们也会把它围起来。

$justify(表达式、宽度、小数点)- Caché轮或垫子将表达式中的小数位数加到此值。

代码语言:javascript
复制
write $justify(5/3,0,3)
1.667

$fnumber(编号,格式,十进制)

代码语言:javascript
复制
write $fnumber(5/3,"",3)
1.667

$number(num,格式,最小,最大)

代码语言:javascript
复制
write $number(5/3,3)
1.667

$normalize(num,scale)

代码语言:javascript
复制
w $normalize(5/3,3)
1.667

你只需要选择哪一个更适合你。他们做不同的事情,但结果可能是一样的。

票数 4
EN

Stack Overflow用户

发布于 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)*除数)总是要返回原来的数字。

希望这有助于您在编程中明确这一想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33777473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档