java math round小數_Java——Math的round方法

代碼如下,后面的注釋是輸出的結果

public static voidmain(String[] args) {

System.out.println(Math.round(0.399));//0

System.out.println(Math.round(0.4));//0

System.out.println(Math.round(0.41));//0

System.out.println(Math.round(0.499));//0

System.out.println(Math.round(0.5));//1

System.out.println(Math.round(0.51));//1

System.out.println(Math.round(0.6));//1

System.out.println("======================");

System.out.println(Math.round(-0.6));//-1

System.out.println(Math.round(-0.51));//-1

System.out.println(Math.round(-0.5));//0

System.out.println(Math.round(-0.499));//0

System.out.println(Math.round(-0.41));//0

System.out.println(Math.round(-0.4));//0

System.out.println(Math.round(-0.399));//0

}

總結,round的進位是向數軸的右方向進位的,而不是按照數的絕對值進行四舍五入的

下方把該博文摘錄

一、問題

三角函數在Java中是怎么表示的?

二、解答

2.1、Math中的三角函數

首先來看一下,Java中的Math怎么表示30°角的弧度制,這里Math中有一個常量PI,就是π;我們知道sin30°=0.5;Java中卻是近似值:

bf14c26930f1138d134c9d24cee37821.png

2.2、保留小數

我們采取近似值,保留2位小數,采用四舍五入進位模式,即

RoundingMode.HALF_UP

,達到了一半就進位;這里的“一半”是當前進制下,目標所在位權重值的(0.5*進制值)倍,如果是十進制,所在位為個位,那么個位達到了十進制的一半,即5,就向上進1位;

13f51eb6125d3b284c9e0144e1e02a3e.png

2.3、例子

package Math;

import java.math.BigDecimal;

import java.math.RoundingMode;

public class TestMathTadisans {

/**

*@author Taozc

*@2018-6-10 01:02:16

*/

public static void main(String[] args) {

//sin30° =0.5;

System.out.println("30度角的正弦值:"+new BigDecimal(Math.sin(Math.PI/6)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//cos60° =0.5;

System.out.println("60度角的余弦值:"+new BigDecimal(Math.cos(Math.PI/3)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//tan45° =1;

System.out.println("45度角的正切:"+new BigDecimal(Math.tan(Math.PI/4)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//正弦值為0.5對應的弧度是π/6≈0.5236,角度是30°;

System.out.println("正弦值為0.5所對應的反正弦值(對應的弧度):"+new BigDecimal(Math.asin(0.5)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//余弦值為0.5對應的弧度是π/3≈1.047,角度是60°;

System.out.println("余弦值為0.5所對應的反余弦值(對應的弧度):"+new BigDecimal(Math.acos(0.5)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//正弦值為0.5的弧度是π/4≈0.5236,角度是45°;

System.out.println("正切值為1所對應的反正切值(對應的弧度):"+new BigDecimal(Math.atan(1)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//正弦值為0.5對應的弧度是π/6≈0.5236,角度是30°;

System.out.println("正弦值為0.5所對應的反正弦值(對應的角度):"+Math.toDegrees(Math.asin(0.5)));

//余弦值為0.5對應的弧度是π/3≈1.047,角度是60°;

System.out.println("余弦值為0.5所對應的反余弦值(對應的角度):"+Math.toDegrees(Math.acos(0.5)));

//正弦值為0.5的弧度是π/4≈0.5236,角度是45°;

System.out.println("正切值為1所對應的反正切值(對應的角度):"+Math.toDegrees(Math.atan(1)));

System.out.println("將60度角轉化為弧度:"+new BigDecimal(Math.toRadians(60)).setScale(2, RoundingMode.HALF_UP));

System.out.println("將“六分之一π”弧度轉化為角度"+new BigDecimal(Math.toDegrees(Math.PI/6)).setScale(2, RoundingMode.HALF_UP));

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

2.4截圖:

4870ac124e890d8d45cc7abf28f479ff.png

三、反思

這里還有一個不好的地方,就是弧度制轉角度的時候,是近似值,但是實際應該是整數;比如30°對應的是六分之一π,但是上面打印出來的值是30.000000000000004,這是為什么呢,這是由于π是無限不循環小數,π除以6,還是一個無限不循環小數,怎么等于30這個值呢?其實,這里應該好好理解下30°,這里別忘了,我們還有一個單位:度,度是什么?度是一個圓,我們切成360份,一份叫一度,30°就是:30×(圓÷360),這里的“度”就是“圓÷360”,我們把漢字“圓”用2π來代替,就變成了“2π÷360”,即“π÷180”,這個就是“°”的本質,她最精確的值(無限不循環);計算機精確度有限,讓它表示一個無限不循環小數,她只能近似表達;

? ? ? ? ? ? ? ? ?

一、問題

三角函數在Java中是怎么表示的?

二、解答

2.1、Math中的三角函數

首先來看一下,Java中的Math怎么表示30°角的弧度制,這里Math中有一個常量PI,就是π;
我們知道sin30°=0.5;Java中卻是近似值: 這里寫圖片描述

2.2、保留小數

我們采取近似值,保留2位小數,采用四舍五入進位模式,即

RoundingMode.HALF_UP

,達到了一半就進位;
這里的“一半”是當前進制下,目標所在位權重值的(0.5*進制值)倍,如果是十進制,所在位為個位,那么個位達到了十進制的一半,即5,就向上進1位; 這里寫圖片描述

2.3、例子

package Math;

import java.math.BigDecimal;import java.math.RoundingMode;

public class TestMathTadisans {? ? /**? ? ?*@author Taozc? ? ?*@2018-6-10 01:02:16? ? ?*/? ? public static void main(String[] args) {? ? ? ? //sin30° =0.5;? ? ? ? System.out.println("30度角的正弦值:"+new BigDecimal(Math.sin(Math.PI/6)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");? ? ? ? //cos60° =0.5;? ? ? ? System.out.println("60度角的余弦值:"+new BigDecimal(Math.cos(Math.PI/3)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");? ? ? ? //tan45° =1;? ? ? ? System.out.println("45度角的正切:"+new BigDecimal(Math.tan(Math.PI/4)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//正弦值為0.5對應的弧度是π/60.5236,角度是30°;? ? ? ? System.out.println("正弦值為0.5所對應的反正弦值(對應的弧度):"+new BigDecimal(Math.asin(0.5)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");? ? ? ? //余弦值為0.5對應的弧度是π/31.047,角度是60°;? ? ? ? System.out.println("余弦值為0.5所對應的反余弦值(對應的弧度):"+new BigDecimal(Math.acos(0.5)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");? ? ? ? //正弦值為0.5的弧度是π/40.5236,角度是45°;? ? ? ? System.out.println("正切值為1所對應的反正切值(對應的弧度):"+new BigDecimal(Math.atan(1)).setScale(2, RoundingMode.HALF_UP)+"(保留2為小數,四舍五入)");

//正弦值為0.5對應的弧度是π/60.5236,角度是30°;? ? ? ? System.out.println("正弦值為0.5所對應的反正弦值(對應的角度):"+Math.toDegrees(Math.asin(0.5)));? ? ? ? //余弦值為0.5對應的弧度是π/31.047,角度是60°;? ? ? ? System.out.println("余弦值為0.5所對應的反余弦值(對應的角度):"+Math.toDegrees(Math.acos(0.5)));? ? ? ? //正弦值為0.5的弧度是π/40.5236,角度是45°;? ? ? ? System.out.println("正切值為1所對應的反正切值(對應的角度):"+Math.toDegrees(Math.atan(1)));

System.out.println("將60度角轉化為弧度:"+new BigDecimal(Math.toRadians(60)).setScale(2, RoundingMode.HALF_UP));? ? ? ? System.out.println("將“六分之一π”弧度轉化為角度"+new BigDecimal(Math.toDegrees(Math.PI/6)).setScale(2, RoundingMode.HALF_UP));? ? }}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

2.4截圖:

這里寫圖片描述

三、反思

這里還有一個不好的地方,就是弧度制轉角度的時候,是近似值,但是實際應該是整數;比如30°對應的是六分之一π,但是上面打印出來的值是30.000000000000004,這是為什么呢,這是由于π是無限不循環小數,π除以6,還是一個無限不循環小數,怎么等于30這個值呢?其實,這里應該好好理解下30°,這里別忘了,我們還有一個單位:度,度是什么?度是一個圓,我們切成360份,一份叫一度,30°就是:30×(圓÷360),這里的“度”就是“圓÷360”,我們把漢字“圓”用2π來代替,就變成了“2π÷360”,即“π÷180”,這個就是“°”的本質,她最精確的值(無限不循環);計算機精確度有限,讓它表示一個無限不循環小數,她只能近似表達;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270559.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270559.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270559.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦軟件:9款超級實用的辦公軟件

目錄 一、Quicker 二、Eagle 三、FSCapture 四、圖說 五、Lively Wallpaper 六、愛奇藝萬能聯播 七、Fliqlo 八、Folder Painter 九、7Zip 今天給大家分享9款超級實用的辦公軟件,值得收藏! 一、Quicker 作為全網好評的這款國產軟件,可以秒殺很…

20145231 《信息安全系統設計基礎》期中總結

20145231 《信息安全系統設計基礎》期中總結 教材學習內容復習 結合課本知識及再次實踐加深理解記憶 按照學習時相關重點知識的順序進行整理歸納 實踐內容:重要命令的使用 gdb調試棧幀(再理解) makefile 編譯運行代碼深入理解局部性 Linux中的…

資源分享:分享5個冷門而超級實用的在線網站

目錄 1、網站配色-Adobe color 1、YYDS電影 3、藍調music 4、在線藝術圖庫 5、全景看世界 AirPano 1、網站配色-Adobe color 網站:https://color.adobe.com/zh/ 只需要在網上找到一張有你喜歡的顏色的任意圖片或者照片,拖入網頁,Adobe Color …

常用插件:分享12款超級好用的 Chrome 插件

1、dblock Plus:免除廣告困擾你是不是每次搜索百度前幾個都是廣告?有了它,你的搜索結果只有純凈。2. 監聽網絡請求插件simple-extension插件讓每個網站都可以保存/切換Cookies、切換User-Agent,簡單地監聽網絡請求。地址&#xff…

IrregularGridCollectionView處理不定寬度的標簽cell

IrregularGridCollectionView處理不定寬度的標簽cell 效果 源碼 https://github.com/YouXianMing/UI-Component-Collection 中的 IrregularGridCollectionView // // IrregularGridCollectionView.h // IrregularGridCollectionView // // Created by YouXianMing on 16/8/3…

服務端負載均衡和客戶端負載均衡

服務端負載均衡 用戶在App訪問通過80端口請求nginx,ngin來實現負載均衡,分發請求 客戶端負載均衡 Eureka Server注冊中心集群部署,goods_services服務提供者啟動后向Eureka Server注冊中心進行服務注冊 App服務從Eureka Server發現服務 goods_servic…

java上傳和下載文件代碼_JavaWeb中上傳和下載文件實例代碼

一丶先引入上傳下載的lib二丶上傳的的servletpackage com.test.action;import java.io.file;import java.io.fileoutputstream;import java.io.ioexception;import java.io.inputstream;import java.io.outputstream;import java.util.list;import javax.servlet.servletexcept…

kafka java api 刪除_使用Java API創建(create),查看(describe),列舉(list),刪除(delete)Kafka主題(Topic)...

使用Kafka的同學都知道,我們每次創建Kafka主題(Topic)的時候可以指定分區數和副本數等信息,如果將這些屬性配置到server.properties文件中,以后調用Java API生成的主題將使用默認值,先改變需要使用命令bin/kafka-topics.sh --zook…

操作系統:Linux 環境變量配置的 6 種方法

目錄 Linux環境變量配置 Linux讀取環境變量 Linux環境變量配置方法一:export PATH Linux環境變量配置方法二:vim ~/.bashrc Linux環境變量配置方法三:vim ~/.bash_profile Linux環境變量配置方法四:vim /etc/bashrc Linux環境變量…

操作系統:Win10有哪些版本,看完你就知道了

目錄 一、win10家庭版 二、win10專業版 三、win10企業版 四、win10教育版 Win10有四個版本是我們最常見的:win10家庭版、win10專業版、win10企業版、win10教育版。 今天就主要說這4個比較經典的版本,一起來看看吧! 一、win10家庭版 一般來說&…

mysql-5.5.8_MySQL5.5.8安裝

一、軟件包a) cmake-2.8.3.tar.gzb) mysql-5.5.8.tar.gz二、安裝步驟a) Tar zxvf cmake-2.8.3.tar.gzb) Cd cmake-2.8.3c) ./bootstrapd) Makee) Make installf) Tar zxvf mysql-5.5.8.tar.gzg) Cd mysql-5.5.8h) 配置參數cmake . -DCMAKE_INSTALL_PREFIX/usr/local/mysql5 \-D…

C# Web實時消息后臺服務器推送技術-GoEasy

越來越多的項目需要用到實時消息的推送與接收,怎樣用C#實現最方便呢?我這里推薦大家使用GoEasy, 它是一款第三方推送服務平臺,使用它的API可以輕松搞定實時推送! 瀏覽器兼容性:GoEasy推送 支持websocket 和polling兩種…

硬件知識:打印機常見的故障及維護,值得收藏

一、打印時不出墨癥狀 打印機在聯機或自檢時,打印頭有動作,但打印不出墨。故障分析 這一情況發生,有多方面原因,可能包括噴頭故障,清潔單元故障,電鍍及電路板故障等,但在排除了噴頭故障后可以這…

mac下SecureCRT連接阿里云服務器最新教程

一.首先進入自己的阿里云管理控制臺 地址 https://ecs.console.aliyun.com/?spm5176.6660585.774526198.1.57c96bf8inrLvC#/home 二:輸入密碼 三:點擊密碼重置 四:打開SecureCRT 點擊加號 五:點擊continue 六:在Ho…

oralce之存儲過程

一:--循環向表emp中插入數據 1 declare 2 maxnumber number:10000;3 v_count number;4 begin5 v_count :0;6 FOR x IN 1..maxnumber7 LOOP8 v_count :v_count1;9 insert into emp (empno,ename,job,mgr,sal,comm) 10 valu…

java 日期calendar_java時間對象Date,Calendar和LocalDate/LocalDateTime

一、簡介Date:java.util.Date包,包含日期,時間,毫秒數。Calendar:java.util.Calendar包,abstract修飾,Date的很多方法已經過時遷移到了Calendar類上。LocalDate/LocalDateTime:java.…

IIS實現服務器反向代理用法介紹

今天給打擊分享IIS實現服務器反向代理用法,感興趣的可以學習一下!場景:本地電腦啟動了兩個網站地址分別為:http://127.0.0.1:8081/Sitehttp://127.0.0.1:8082/Test要實現同一個端口訪問:http://127.0.0.1:8080/Sitehtt…