salesforce 零基础学习(四十三)运算取余
工作中遇到一个简单的小问题,判断两个数是否整除,如果不整除,获取相关的余数。
习惯java的我毫不犹豫的写下了代码
public Boolean isDivisibility(Integer dividend,Integer divider) {
return dividend % divider == 0;
}
提交代码发现竟然提交不上??
后来查看API发现apex中没有直接的%取余运算,所以如果想要取余以及判断是否整除需要其他方式,代码如下:
public without sharing class MathHelper {
/*
是否整除
@param dividend 被除数
@param divider 除数
@return 整除返回true,不整除返回false
*/
public static Boolean isDivisibility(Integer dividend,Integer divider) {
//先将被除数转换成Decimal,否则先计算整数除法结果为Integer类型,然后将整数转换成Decimal
Decimal resultDecimal = Decimal.valueOf(dividend) / divider;
//获取结果上线
Integer resultSeiling = Integer.valueOf(resultDecimal.round(System.RoundingMode.CEILING));
Integer resultDown = Integer.valueOf(resultDecimal.round(System.RoundingMode.DOWN));
return resultSeiling == resultDown;
}
/*
获取余数
@param dividend 被除数
@param divider 除数
@return 返回余数
*/
public static Integer getRemainder(Integer dividend,Integer divider) {
Decimal resultDecimal = Decimal.valueOf(dividend) / divider;
Integer resultDown = Integer.valueOf(resultDecimal.round(System.RoundingMode.DOWN));
return dividend - resultDown * divider;
}
}
调用结果显示:

通过上述代码可以看出,我们运算的主要方式为将被除数转换成Decimal类型,除以除数得到Decimal类型的余数,通过取舍规则获取他的上限值和下限值,如果上限和下限相等,则整除,否则不整除。
这里我们主要用到的是取舍模式。System.RoundingMode包含以下常用的取值:
UP:简单的说,UP是对decimal值进行绝对值向上取,符号不变化。
1. 5.5通过RoundingMode.UP操作以后变成了6;
2. -1.5通过RoundingMode.UP操作以后变成了-2;
DOWN:简单的说,DOWN是对decimal值进行绝对值向下取,符号不变化。
1. 5.5通过RoundingMode.DOWN操作以后变成了5;
2. -1.5通过RoundingMode.DOWN操作以后变成了-1;
CELLING:对于正数,CELLING操作和UP操作相同,对于负数,操作和DOWN操作相同。
1. 5.5通过RoundingMode.CELLING操作以后变成了6;
2. -1.5通过RoundingMode.CELLING操作以后变成了-1;
FLOOR:对于正数,FLOOR操作和DOWN操作相同,对于负数,操作和UP操作相同。
1. 5.5通过RoundingMode.FLOOR操作以后变成了5;
2. -1.5通过RoundingMode.FLOOR操作以后变成了-2;
HALF_UP:小数点部分大于等于0.5,绝对值向上取,符号跟随。
1. 5.5通过RoundingMode.FLOOR操作以后变成了6;
2. 5.1通过RoundingMode.FLOOR操作以后变成了5,因为0.1<0.5;
3. -1.5通过RoundingMode.FLOOR操作以后变成了-2;
4. -1.1通过RoundingMode.FLOOR操作以后变成了-1;
HALF_DOWN:小数点部分大于0.5,绝对值向上取,符号跟随。
1. 5.5通过RoundingMode.FLOOR操作以后变成了5;
2. 5.7通过RoundingMode.FLOOR操作以后变成了6,因为0.7>0.5;
3. -1.5通过RoundingMode.FLOOR操作以后变成了-1;
4. -1.7通过RoundingMode.FLOOR操作以后变成了-2;
总结:本篇主要描述两个整数是否整除并且获取余数的方法以及取舍模式的几个值得概念以及定义,详情了解请自行查看官方API文档,有错误的地方欢迎指正,有问题欢迎留言。
salesforce 零基础学习(四十三)运算取余的更多相关文章
- salesforce零基础学习(一百一十三)Trigger中获取IP地址的过程
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.228.0.apexcode.meta/apexcode/apex_class_Auth ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- salesforce 零基础学习(六十八)http callout test class写法
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
- salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...
- salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_syst ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...
- 【转】【Salesforce】salesforce 零基础学习(十七)Trigger用法
看本篇之前可以相应阅读以下Trigger相关文章: 1.https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigge ...
- salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...
随机推荐
- SQL 数字分割的字符串
:表示包含正数或者负数.或者0 即表示,数字的字段! select * from 表名 where isnull(字段名,'')<>'' 同时排除空值和null的情况 select coo ...
- 转:MYSQL连接字符串参数解析(解释)
被迫转到MySQL数据库,发现读取数据库时,tinyint类型的值都被转化为boolean了,这样大于1的值都丢失,变成true了.查阅资料MySQL中无Boolean类型,都是存储为tinyint了 ...
- 伪类before和after
以你添加的元素为基础!在他的里面!也就是他的内容的前面或者后面添加东西! 如果原来的元素没有内容会出现什么情况?(伪类的宽和高和元素的相等)
- javascript中三种典型情况下this的含义
this本意:基于函数的执行环境绑定. 1)一般函数内部,返回的是window(作用域链中的第二层全局作用域) function test() { return this; } alert(test( ...
- HTML常用标签总结
HTML 的常用标签总结 <font size="字体大小1-7" color="red或0xff00ff" face="字体类型(楷体等)&q ...
- CSS 是程序员的画笔
在未来的所有界面.皮肤,都将使用CSS来表现.包括网页.应用.甚至现实物体的包装等等. 因为CSS实践的理念十分优秀:抽离.分类.统一. CSS将是程序员的画笔. 刚做出来的程序基本都是一个样子.产品 ...
- java分享第十七天-02(封装操作excel类)
java解析EXCEL用的是POI的JAR包,兼容EXCEL2003及2007+版本的EXCEL所需要的JAR包:poi-3.8.jarpoi-ooxml.jarpoi-ooxml-schemas. ...
- Firefox页面缩放
这一段firefox只能缩放文字,不能实现整个页面的缩放,各种尝试,最后发现是勾选了view--zoom--zoom text only!!(按alt键调出菜单)
- [转]Android ListView 与 RecyclerView 对比浅析—缓存机制
从源码角度剖析ListView 与 RecyclerView 缓存机制的不同 https://zhuanlan.zhihu.com/p/23339185 原文地址:http://dev.qq.com/ ...
- Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
[摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...