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.mzph.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…

操作系统: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家庭版 一般来说&…

硬件知识:打印机常见的故障及维护,值得收藏

一、打印时不出墨症状 打印机在联机或自检时,打印头有动作,但打印不出墨。故障分析 这一情况发生,有多方面原因,可能包括喷头故障,清洁单元故障,电镀及电路板故障等,但在排除了喷头故障后可以这…

mac下SecureCRT连接阿里云服务器最新教程

一.首先进入自己的阿里云管理控制台 地址 https://ecs.console.aliyun.com/?spm5176.6660585.774526198.1.57c96bf8inrLvC#/home 二:输入密码 三:点击密码重置 四:打开SecureCRT 点击加号 五:点击continue 六:在Ho…

IIS实现服务器反向代理用法介绍

今天给打击分享IIS实现服务器反向代理用法,感兴趣的可以学习一下!场景:本地电脑启动了两个网站地址分别为:http://127.0.0.1:8081/Sitehttp://127.0.0.1:8082/Test要实现同一个端口访问:http://127.0.0.1:8080/Sitehtt…

java if else过多_Spring Boot中如何干掉过多的if else!

需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的if else:策略模式实现利用策略模式&#xff0…

硬件知识:固态硬盘相关知识介绍

目录 1、主控 2、固件算法 3、SSD的SATA接口与M.2接口 4、速度对比 今天就为大家全面科普一下固态硬盘的相关知识,让大家购买时做到心中有数,按需选择。 首先还是从SSD的结构来说起,SSD最基本的组成部件分为:主控芯片、闪存芯片、…

编码实战Web端联系人的增删改查

首先画出分析图 实现效果如图 项目下的包如图: 实体包 package com.contactSystem.entiey;public class Contact {private String Id;private String name;private String sex;private String age;private String phone;private String qq;private String email;pub…