java getscale_java取整和java四舍五入方法 BigDecimal.setScale()方法详解._文武尊者的博客-程序员宝宝

技术标签: java getscale  

内容:

import java.math.BigDecimal;

import java.text.DecimalFormat;

public class TestGetInt{

public static void main(String[] args){

double i=2, j=2.1, k=2.5, m=2.9;

System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i));

System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j));

System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k));

System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m));

/* 这段被注释的代码不能正确的实现四舍五入取整

System.out.println("四舍五入取整:Math.rint(2)=" + (int)Math.rint(i));

System.out.println("四舍五入取整:Math.rint(2.1)=" + (int)Math.rint(j));

System.out.println("四舍五入取整:Math.rint(2.5)=" + (int)Math.rint(k));

System.out.println("四舍五入取整:Math.rint(2.9)=" + (int)Math.rint(m));

System.out.println("四舍五入取整:(2)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.1)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.5)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.9)=" + new DecimalFormat("0").format(i));

*/

System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i));

System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j));

System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k));

System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));

System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i));

System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j));

System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k));

System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m));

System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i));

System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j));

System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k));

System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m));

}

}

//_____________________________

舍掉小?取整:Math.floor(2)=2

舍掉小?取整:Math.floor(2.1)=2

舍掉小?取整:Math.floor(2.5)=2

舍掉小?取整:Math.floor(2.9)=2

四舍五入取整:(2)=2

四舍五入取整:(2.1)=2

四舍五入取整:(2.5)=3

四舍五入取整:(2.9)=3

?整:Math.ceil(2)=2

?整:Math.ceil(2.1)=3

?整:Math.ceil(2.5)=3

?整:Math.ceil(2.9)=3

舍掉小?取整:Math.floor(-2)=-2

舍掉小?取整:Math.floor(-2.1)=-3

舍掉小?取整:Math.floor(-2.5)=-3

舍掉小?取整:Math.floor(-2.9)=-3

四舍五入取整:(-2)=-2

四舍五入取整:(-2.1)=-2

四舍五入取整:(-2.5)=-3

四舍五入取整:(-2.9)=-3

?整:Math.ceil(-2)=-2

?整:Math.ceil(-2.1)=-2

?整:Math.ceil(-2.5)=-2

?整:Math.ceil(-2.9)=-2

===================================================

BigDecimal b = new BigDecimal(9.655 );

//double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println("f1=" + f1);//f1=9.65

BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP);

System.out.println("mData=" + mData);//mData=9.66

public BigDecimal(double val)

将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式。返回的 BigDecimal 的标度是使 (10scale × val) 为整数的最小值。

注:

此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于 0.1000000000000000055511151231257827021181583404541015625。这是因为 0.1 无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。这样,传入 到构造方法的值不会正好等于 0.1(虽然表面上等于该值)。

另一方面,String 构造方法是完全可预知的:写入 new BigDecimal("0.1") 将创建一个 BigDecimal,它正好 等于预期的 0.1。因此,比较而言,通常建议优先使用String 构造方法。

当 double 必须用作 BigDecimal 的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用 Double.toString(double) 方法,然后使用 BigDecimal(String) 构造方法,将 double 转换为 String。要获取该结果,请使用 static valueOf(double) 方法。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35251837/article/details/114190747

智能推荐

机器学习 L1 L2正则化详解_myword1314的博客-程序员宝宝

正则化(Regularization)机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作-norm和-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ri...

python字符串左_Python去除字符串左边指定字符_weixin_39960145的博客-程序员宝宝

Python去除字符串左边指定字符教程在开发过程中,有时候我们需要去除一个lstrip() 函数只用于去除字符串左边的指定字符,而Python lstrip()函数详解语法S.lstrip([chars]) -> str参数参数描述S表示原字符串。chars要去除的字符串。返回值去除特定字符后的字符串。案例去除字符串左边的指定字符使用 lstrip() 函数,去除字符串左边的指定字符prin...

众多Android 开源项目推荐,给力工作给力学习_纸飞机的博客-程序员宝宝

转自:http://www.cnblogs.com/TerryBlog/archive/2011/04/18/2019907.htmlFBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。 项目地址:http://www....

visual studio 的各个版本下载地址_vs6 中文版下载_sukhoi27smk的博客-程序员宝宝

Microsoft Visual Studio 6.0 下载:英文版360云盘下载:http://l11.yunpan.cn/lk/sVeBLC3bhumrI英文版115网盘下载:http://115.com/file/bew2qrau英文版迅雷下载:http://61.138.140.18/download/jlste_nw/vs6en.iso FTP下载:ftp://211.6

oauth2配置使用redisTokenService问题_Aprilz_的博客-程序员宝宝

package com.lsh.product.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.conne...

什么是低音炮,低音炮的原理与音效_chanlin7003的博客-程序员宝宝

什么是低音炮,低音炮的原理与音效2011-06-15 15:16 低音炮是大家的一个俗称或者简称,严格讲应该是:同轴喇叭,高音仔,超高音,超重低音。就人耳可闻的音频分析而言,由超重低音、低音、低中音、中音、中高音、高音、超高音等组成。 ...

随便推点

网易闪电邮收信显示连接服务器,网易闪电邮IMAP协议同步网页邮箱收发邮件的使用技巧..._weixin_39997311的博客-程序员宝宝

网易闪电邮是许多网友都在使用的一款邮箱,它为用户提供了非常多有用的功能,比如:使用网易闪电邮IMAP协议,就可以让网易闪电邮同步接收与发送网页邮箱的邮件,下面,就一起来了解一下网易闪电邮IMAP协议同步网页邮箱收发邮件的使用技巧!设置帐户(1)设置网易邮箱帐号:第一步:打开“邮箱”菜单下“新建邮箱帐户”,输入邮箱地址和密码;第二步:选择客户端模式,并点击“高级设置”:第三步:在高级设置中,选择“I...

SpringMVC常用注解_只因为你而温柔的博客-程序员宝宝

SpringMVC常用注解项目结构配置文件pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem...

vue rule 动态校验规则_vue动态rule_sunyin.zheng的博客-程序员宝宝

vue rule 动态校验规则,动态设置 element ui 里面的validate 校验。解决动态校验的需求。

网络变压器中间抽头接法_网络变压器中心抽头_冷月心-硬件工程师的博客-程序员宝宝

在以太网设备中,通过PHY接RJ45时,中间都会加一个网络变压器。有的变压器中心抽头接到地。而且接电源时,电源值又可以不一样,3.3V,2.5V,1.8V都有。这个网络变压器中间抽头接法与PHY的关系分析如下:1、中间抽头为什么有些接电源?有些接地?这个主要是与使用的PHY芯片UTP口驱动类型决定的,这种驱动类型有两种,电压驱动和电流驱动。电压驱动的需要接电源;电流驱动的就直接接个电容到地即可!所以对于不同的芯片,中心抽头的接法,与PHY是有密切关系的,具体还要参看芯片的datasheet和参考设计了。

you *might* want to use the less safe log_bin_trust_function_creators variable_胡嚞衎的博客-程序员宝宝

一、报错过程在MySQL8.0.13上创建自定义函数时出现此错误。二、报错原因因为MySQL8.0二进制日志默认开启,二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致。所以当开启二进制日志后,参数log_bin_trust_function_creators就会生效,限制存储函数的创建、修改、调用。点我,查看官方文档三、解决问题方法一如果未使用主从复制,则...

茶文化网页代码(详细解释)_茶文化网页设计源代码_greyKing666的博客-程序员宝宝

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"&am

推荐文章

热门文章

相关标签