草庐IT

Java Math floor、ceil、rint 及 round 用法

runoob 2023-03-28 原文

floor 返回不大于的最大整数。

round 则是 4 舍 5 入的计算,入的时候是到大于它的整数。

round 表示"四舍五入",算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整,所以 Math.round(11.5) 的结果为 12,Math.round(-11.5) 的结果为 -11。

我们先通过以下实例来看看 Java Math floor、ceil、rint 及 round 各个方法的输出结果:

Test.java


import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个浮点数:"); while(sc.hasNext()){ double num = sc.nextDouble(); System.out.println("Math.floor(" + num + ") = " + Math.floor(num)); System.out.println("Math.ceil(" + num + ") = " + Math.ceil(num)); System.out.println("Math.rint(" + num + ") = " + Math.rint(num)); System.out.println("Math.round(" + num + ") = " + Math.round(num)); } } }

执行以上程序测试输出:

$ javac Test.java 
$ java Test
输入一个浮点数:
2.2
Math.floor(2.2) = 2.0
Math.ceil(2.2) = 3.0
Math.rint(2.2) = 2.0
Math.round(2.2) = 2
-2.2
Math.floor(-2.2) = -3.0
Math.ceil(-2.2) = -2.0
Math.rint(-2.2) = -2.0
Math.round(-2.2) = -2
-2.5
Math.floor(-2.5) = -3.0
Math.ceil(-2.5) = -2.0
Math.rint(-2.5) = -2.0
Math.round(-2.5) = -2
2.5
Math.floor(2.5) = 2.0
Math.ceil(2.5) = 3.0
Math.rint(2.5) = 2.0
Math.round(2.5) = 3
2.7
Math.floor(2.7) = 2.0
Math.ceil(2.7) = 3.0
Math.rint(2.7) = 3.0
Math.round(2.7) = 3
-2.7
Math.floor(-2.7) = -3.0
Math.ceil(-2.7) = -2.0
Math.rint(-2.7) = -3.0
Math.round(-2.7) = -3

解析输出

1、Math.floor() 向下取整,即小于这个数的最大的那个整数。

Math.floor(2.2) = 2.0;  
Math.floor(-2.2) = -3.0;  
Math.floor(2.5) = 2.0;  
Math.floor(-2.5) = -3.0;  
Math.floor(2.7) = 2.0;  
Math.floor(-2.7) = -3.0; 

2、Math.ceil() 向上取整,即大于这个数的最小的那个整数。

Math.ceil(2.2) = 3.0;  
Math.ceil(-2.2) = -2.0;  
Math.ceil(2.5) = 3.0;  
Math.ceil(-2.5) = -2.0;  
Math.ceil(2.7) = 3.0;  
Math.ceil(-2.7) = -2.0;

3、Math.rint() 返回最接近该值的那个整数。

注意: 如果存在两个这样的整数,则返回其中的偶数

4、Math.round() 四舍五入,但当参数为负数时不太好理解,直接上源码应该比较好理解,注意返回的是整型。

Math.round(x) = Math.floor(x + 0.5)  

把以上代码带入以下实例测试:

Math.round(2.2) = 2;  
Math.round(-2.2) = -2;  
Math.round(2.5) = 3;  
Math.round(-2.5) = -2;  
Math.round(2.7) = 3;  
Math.round(-2.7) = -3  

参考地址:https://blog.csdn.net/u012050154/article/details/52448260

有关Java Math floor、ceil、rint 及 round 用法的更多相关文章

  1. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  2. ruby - 使用法拉第上传文件 - 2

    我在尝试使用Faraday将文件上传到网络服务时遇到问题。我的代码:conn=Faraday.new('http://myapi')do|f|f.request:multipartendpayload={:file=>Faraday::UploadIO.new('...','image/jpeg')}conn.post('/',payload)尝试发布后似乎没有任何反应。当我检查响应时this是我所看到的:#:post,:body=>#,#,@opts={}>,#],@index=0>>,#>],@ios=[#,#,@opts={}>,#],@index=0>,#],@index=0>

  3. ruby - rspec: raise_error 用法来匹配错误信息 - 2

    我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme

  4. 【ChatGPT】ChatGPT 的 N 种用法 - 2

    目录ChatGPT简介技术原理应用未来发展ChatGPT的10 种用法ChatGPT简介ChatGPT是一种基于深度学习的大型语言模型,由OpenAI公司开发。技术原理GPT是GenerativePre-trainedTransformer的缩写,意为生成式预训练变压器。它的技术原理是使用了一个基于注意力机制的变压器(Trans

  5. ruby - 是否有 Rack::Session::Cookie 用法的基本示例? - 2

    我找不到任何使用Rack::Session::Cookie的简单示例,并且希望能够将信息存储在cookie中,并在以后的请求中访问它并让它过期.这些是我能找到的唯一示例:HowdoIset/getsessionvarsinaRackapp?http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html这是我得到的:useRack::Session::Cookie,:key=>'rack.session',:domain=>'foo.com',:path=>'/',:expire_after=>2592000,:secret=

  6. ruby - Ruby 方法的双冒号(双列或::)语法的惯用用法 - 2

    我是Ruby的新手,发现以下几对令人困惑示例同样有效:File.included_modulesFile::included_modulesFile.stat('mbox')#Returnsa'#'objectFile::stat('mbox')File.new("foo.txt","w")File::new("foo.txt","w")"asdf".size#Aninstancemethod"asdf"::size2+32::send(:+,3)#AnextremeexampleFile::new,尤其是我经常遇到的东西。我的问题:如果我永远避免使用::运算符来限定除类、模块和常量之

  7. ruby-on-rails - 如果只有一个存在,是否有用于返回第一个数组元素的 ruby​​ 习惯用法? - 2

    如果数组只包含一个值,我想返回数组的第一个元素。目前,我使用:vals.one??vals.first:vals.presence因此:vals=[];vals.one??vals.first:vals.presence#=>nilvals=[2];vals.one??vals.first:vals.presence#=>2vals=[2,'Z'];vals.one??vals.first:vals.presence#=>[2,"Z"]是否有内置的东西可以做到这一点,或者是否有更好的设计考虑?我的用例是特定的,涉及知道从方法(将实现上述代码)中期望什么的演示者。如果这些演示者将所有返回

  8. ruby - 这是 &&= 在 Ruby 中的合理用法吗? - 2

    在SOquestion2068165一个答案提出了使用这样的东西的想法:params[:task][:completed_at]&&=Time.parse(params[:task][:completed_at])作为DRYer的说法params[:task][:completed_at]=Time.parse(params[:task][:completed_at])ifparams[:task][:completed_at]paramsHash将来自(Rails/ActionView)表单。这是众所周知的||=习语的一种推论,如果LHS不是nil/false则设置值。像这样使用&&

  9. ruby - Head 用法未知选项 -1/-n 错误。可能与 ruby 有关 - 2

    我在OSX10.9.1中启动终端时反复出现问题。每次启动终端时,我都会重复以下至少30次Unknownoption:1Usage:head[-options]...-musemethodfortherequest(defaultis'HEAD')-fmakerequestevenifheadbelievesmethodisillegal-bUsethespecifiedURLasbase-tSettimeoutvalue-iSettheIf-Modified-Sinceheaderontherequest-cusethiscontent-typeforPOST,PUT,CHECKIN-

  10. Ruby:为什么 1.025.round(2) 四舍五入为 1.02? - 2

    据我了解.round()-ruby中的功能将小数向上舍入,最后一个有效数字是5?例如1.5.round(0)#=>2(OK)但为什么1.025.round(2)#=>1.02而不是我期望的1.03?irb(main):037:0>1.025.round(2)=>1.02我该怎么做才能解决这个问题? 最佳答案 这与最后一位数字为5无关,与将十进制值转换为double浮点值有关。http://en.wikipedia.org/wiki/Double_precision_floating-point_format基本上,十进制数必须以有限

随机推荐