Java中 % 与Math.floorMod() 区别详解

%为取余(rem),Math.floorMod()为取模(mod)

取余取模有什么区别呢?

对于整型数a,b来说,取模运算或者取余运算的方法都是:

1.求 整数商: c = a/b;

2.计算模或者余数: r = a - c*b.

区别是:

取余运算在计算商值向0方向舍弃小数位

取模运算在计算商值向负无穷方向舍弃小数位

比如a=4,b=-3时,a/b = -1.3333...

此时,取余c=1,取模c=-2

(%在不同语言中有不同的意义,比如Java或者c/c++中%为取余,python中%则为取模)

%(取余)运算:

1、结果的符号:结果的符号与被除数的符号相同,例:x%y 中 为 x 的符号 (结果的绝对值与x、y都为正数时相同)

2、x%y 中如果 x < y 则结果为x

3、0%x 结果为 0

4、x%0 除0错误

Math.floorMod(x,y) (取模):

1、简单记忆:与y符号相同

2、x > y:结果的绝对值与 % 运算相同

3、x < y:①符号相同 结果的绝对值为 y - x ;②符号不同 结果的绝对值与 % 运算相同

符号对照
x y x%y Math.floorMod(x,y)
- + - +
+ - + -
- - - -
+ + + +

补充知识:java.lang.Math

了解和记录一下math类的各种方法,以便以后查找

math.sin:求出sin值

math.cos:求出cos值

math.tan:求出tan值

sinθ=cosθ*tanθ

math.asin:根据sin值求角度

math.acos:根据cos值求角度

math.atan:根据tan值求角度

math.toRadians:根据角度求弧度

math.toDegree:根据弧度求角度

math.exp:E的X幂

math.log:以E为底的对数

math.log10:以10为底的对数

math.sqrt:x的二次方根

math.cbrt:x的三次方根

math.IEEEremainder:根据规定的两个参数计算剩余操作

*根据ieee 754标准。

math.ceil:返回最近的且大于的整数

math.floor:返回最近的且小于的整数

math.rint:返回最接近的整数,如果刚好居中,则取偶数

math.atan2:结果angel是一个弧度值,也可以表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长,计算两点间连线的夹角.(3,3)和(5,5)和原点构成的线的夹角,math.atan2(3-5,3-5),计算出来是弧度值,再转成角度即可。

math.pow:x的y次幂

math.round:跟四舍五入很像,但是不是。小数点后等于5,取整数,正数,整数+1,负数,整数不变,大于5,整数部分+1,正负号不变,小于5,取整数

math.random:随机返回0-1之间的无符号double值

math.addExact:求int和long的和值,超过范围则抛异常

math.substractExact:求int和Long的差值,超出范围则抛异常

math.multiplyExact:求int和long的乘值,超出范围则抛异常

math.incrementExact:求int和long的+1值,超出范围则抛异常

math.decrementExact:求int和Long的-1值,超出范围则抛异常

math.negateExact:求int和long的取反值,超出范围则抛异常

math.toIntExact:求Long的int值,超出范围则抛异常

math.floorDiv:第一个参数除以第二参数,然后针对结果执行floor操作,返回小于或等于商的整数

math.floorMod: return x-floorDiv(x,y)*y;

math.abs:取绝对值

math.max:取最大值

math.min:取最小值

math.sinh:双曲正弦函数sinh(x)=(exp(x)-exp(-x))/2.0

math.cosh:双曲余弦函数cosh(x)=(exp(x)+exp(-x))/2.0

math.tanh:tanh(x)=sinh(x)/cosh(x)

以上这篇Java中 % 与Math.floorMod() 区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2020-08-19

解决SpringBoot打成jar运行后无法读取resources里的文件问题

开发一个word替换功能时,因替换其中的内容功能需要 word 模版,就把 word_replace_tpl.docx 模版文件放到 resources 下 在开发环境中通过下面方法能读取word_replace_tpl.docx文件,但是打成jar包在 linux下运行后无法找到文件了 File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/office_template/xxx.docx&q

用Maven打成可执行jar,包含maven依赖,本地依赖的操作

因为今天一个朋友学习过程中用到了maven项目编写代码,到了最后打包阶段打的包不能运行,一时我也没想起来具体操作步骤,后来我百度学习了一下,特此记录下,以便后续自己查阅. maven项目中不可避免的需要用到依赖jar,实际使用中有的能从maven仓库找到,有的找不到,所以存在使用本地jar的情况,下面将对使用maven仓库中jar,以及使用本地jar不同情况下打包可运行jar进行介绍. 情景一:使用maven依赖,所有的依赖都从maven仓库查找下载,最终打包成可执行jar,需要修改pom文件如

Java 获取 jar包以外的资源操作

在使用 jar 执行 java 代码时,有一个需求是从 jar 包所在目录的同级目录下读取配置文件的需求,从网上找了很多方法感觉都挺复杂的, 在这里总结一下. 以classpath 开头的 URL 表示该文件为jar包内文件的路径. 如:classpath://config/app.config表示jar包根路径config文件夹下的app.config文件 以file开头的URL表示该文件为jar 包外文件的路径 如:file://./config/app.config表示 摘要 // 当前我

java启动jar包将日志打印到文本的简单操作

启动命令: java -jar weichi-1.0.0.jar 将命令打印到1.log上 java -jar weichi-1.0.0.jar > 1.log 补充知识:Java中日志的使用(包含指定日志信息输出到指定地方) 一.前言 对于我们开发者而言,日志存在的意义十分重大:本文主要是自己整理了关于日志的一些知识点,希望能帮助到需要的人,也希望各位能指出我的错误. 二.日志的作用 ① 记录运行信息,方便调试 ② 记录错误信息,方便排查错误 ③ 存储运行记录,方便后期的数据分析 三.日志的主

SpringBoot如何读取war包jar包和Resource资源

这篇文章主要介绍了SpringBoot如何读取war包jar包和Resource资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在本地运行时,获取本地的xml资源文件是能够获取到的,但是项目打成war包jar包启动运行时,就会发生问题,报找不到资源文件的错误.然后经过寻找排查确定了是下面代码通过ClassLoader获

java打jar包的几种方式详解

一.制作只含有字节码文件的jar包 我们先来看只含有字节码文件,即只含有class文件的jar包怎么制作,这是最简单的形式 1.最简单的jar包--直接输出hello 最终生成的jar包结构 META-INF Hello.class 方法步骤 (1)用记事本写一个Hello.java的文件 class Hello{     public static void main(String[] agrs){         System.out.println("hello");     }

java获取linux服务器上的IP操作

在编码过程中需要获取本地IP地址,首先使用的是下面的方法,在Windows环境正常,但是linux服务器上就获取不到, public static String getIpAddress() { String hostAddress = ""; try { InetAddress address = InetAddress.getLocalHost(); hostAddress = address.getHostAddress(); } catch (UnknownHostExcept

浅谈java 执行jar包中的main方法

浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 main 方法,那么如何运行指定的 main 方法呢? 用下面的命令试试看: java -classpath ****.jar ****.****.className [args] "****.****"表示"包名": "className"表示&

java生成jar包的方法

本文实例讲述了java生成jar包的方法,是非常实用的技巧.分享给大家供大家参考.具体分析如下: 很多Java初学者都会有这样的疑问:Java编写的application程序是否能够最终形成一个类似于exe一样的可执行文件,难道就只能用命令行运行? 通常来说有两种方法,一种是制作一个可执行的JAR文件包,然后就可以像.chm文档一样双击运行了:而另一种是使用JET来进行编译.但是JET是要用钱买的,而且据说JET也不是能把所有的Java程序都编译成执行文件,性能也要打些折扣.所以,使用制作可执行

java生成jar包并且单进程运行的实例

java文件打包jar运行 有效步骤: 1.cmd 到当前目录(默认包主类所在目录为例) set classpath = 默认包主类所在目录 2.javac 主类名.java 3.java 主类名 4.写清单文件 Manifest-Version: 1.0 Created-By: 1.8.0 (Sun Microsystems Inc.) Main-Class: 主类名 created-by 版本号 不知道 -> 进cmd 输入java -version 5.jar cfm 自定义.jar MA

python调用java的jar包方法

如下所示: from jpype import * jvmPath = getDefaultJVMPath() jars = ["./Firstmaven-1.0-SNAPSHOT-jar-with-dependencies.jar"] jvm_cp = "-Djava.class.path={}".format(":".join(jars)) startJVM(jvmPath,jvm_cp) sedisObj = JClass("Lo

Java关于jar包的知识详解

在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名包. 格式为: package pkg1[.pkg2[.pkg3-]]: 代码实例: package cn.com.zhouzhou;//包名一定要由小写字母组成 public class Lession1 { public static void main(String[] args) { Sys