当前位置:首页 » 编程语言 » java除法保留小数

java除法保留小数

发布时间: 2023-04-03 07:33:06

1. java中怎么把除法精确到小数点后100位

JAVA中如何对double或者键或知float的浮点数进行精度计算,
在JAVA中提供了多种参数来实现精度的不团滚同控制方式。
具体例子如下:
package com.soft4j.utility;

import java.math.BigDecimal;

/**
* 与小数位精度(四舍五入等)相关的一些常用工具方法.
*
* float/double的精度取稿消值方式分为以下几种: <br>
* java.math.BigDecimal.ROUND_UP <br>
* java.math.BigDecimal.ROUND_DOWN <br>
* java.math.BigDecimal.ROUND_CEILING <br>
* java.math.BigDecimal.ROUND_FLOOR <br>
* java.math.BigDecimal.ROUND_HALF_UP<br>
* java.math.BigDecimal.ROUND_HALF_DOWN <br>
* java.math.BigDecimal.ROUND_HALF_EVEN <br>
*
* @author stephen
* @version 1.0.0
*/
public final class RoundTool {

/**
* 对double数据进行取精度.
* <p>
* For example: <br>
* double value = 100.345678; <br>
* double ret = round(value,4,BigDecimal.ROUND_HALF_UP); <br>
* ret为100.3457 <br>
*
* @param value
* double数据.
* @param scale
* 精度位数(保留的小数位数).
* @param roundingMode
* 精度取值方式.
* @return 精度计算后的数据.
*/
public static double round(double value, int scale, int roundingMode) {
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(scale, roundingMode);
double d = bd.doubleValue();
bd = null;
return d;
}

/**
* 测试用的main方法.
*
* @param argc
* 运行参数.
*/
public static void main(String[] argc) {
//下面都以保留2位小数为例

//ROUND_UP
//只要第2位后面存在大于0的小数,则第2位就+1
System.out.println(round(12.3401,2,BigDecimal.ROUND_UP));//12.35
System.out.println(round(-12.3401,2,BigDecimal.ROUND_UP));//-12.35
//ROUND_DOWN
//与ROUND_UP相反
//直接舍弃第2位后面的所有小数
System.out.println(round(12.349,2,BigDecimal.ROUND_DOWN));//12.34
System.out.println(round(-12.349,2,BigDecimal.ROUND_DOWN));//-12.34
//ROUND_CEILING
//如果数字>0 则和ROUND_UP作用一样
//如果数字<0 则和ROUND_DOWN作用一样
System.out.println(round(12.3401,2,BigDecimal.ROUND_CEILING));//12.35
System.out.println(round(-12.349,2,BigDecimal.ROUND_CEILING));//-12.34
//ROUND_FLOOR
//如果数字>0 则和ROUND_DOWN作用一样
//如果数字<0 则和ROUND_UP作用一样
System.out.println(round(12.349,2,BigDecimal.ROUND_FLOOR));//12.34
System.out.println(round(-12.3401,2,BigDecimal.ROUND_FLOOR));//-12.35
//ROUND_HALF_UP [这种方法最常用]
//如果第3位数字>=5,则第2位数字+1
//备注:只看第3位数字的值,不会考虑第3位之后的小数的
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_UP));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_UP));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_UP));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_UP));//-12.34
//ROUND_HALF_DOWN
//如果第3位数字>=5,则做ROUND_UP
//如果第3位数字<5,则做ROUND_DOWN
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_DOWN));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_DOWN));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_DOWN));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_DOWN));//-12.34
//ROUND_HALF_EVEN
//如果第3位是偶数,则做ROUND_HALF_DOWN
//如果第3位是奇数,则做ROUND_HALF_UP
System.out.println(round(12.346,2,BigDecimal.ROUND_HALF_EVEN));//12.35
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_EVEN));//12.35
}
}
相关文章:

《Double精度的常用设置》
http://henry406.javaeye.com/blog/459669

import java.text.DecimalFormat;
import java.math.BigDecimal;
public class Test_Double{
public static void main(String[] args){
//-----方法1--------四舍五入 round对负数是五舍六入
double d_1 = 123.9;
System.out.println("d_1 = "+Math.round(d_1));
//-------方法2------------------
DecimalFormat decfmt = new DecimalFormat("##0.00");
System.out.println(decfmt.format(1.33482222));
//--------方法3--------------
double x = 1.33345;
java.text.NumberFormat formate = java.text.NumberFormat.getNumberInstance();
formate.setMaximumFractionDigits(3);//设定小数最大为数,那么显示的最后会四舍五入的
String m = formate.format(x);
System.out.println(m);
//--------方法4--------------
BigDecimal bd = new BigDecimal(1.234543);
bd = bd.setScale(3,BigDecimal.ROUND_HALF_EVEN);
double d = bd.doubleValue();
System.out.println(d);
//--------取消科学计数法-------------
Double dValue = Double.valueOf("276363652844.8477474");
System.out.println(dValue);
BigDecimal original = new BigDecimal(dValue.doubleValue());
BigDecimal result = original.setScale(2, BigDecimal.ROUND_HALF_DOWN);
String test = result.toString();
System.out.println(test);
}
}

2. java 除法怎样取小数部分

(((double)lili1)/lili)
-
(lili1/lili)就可以了,如果想显示出小数,必须要将数值转换为float或double类型才可以,推荐double类型

3. java中的运算

表达式:1-2/5+12 %5的结果是:3
首先计算的是2/5,这个意思是2除以5,取整数部分,这个值是0,然后计算12%5,这个意思是12除以5,取余数部分,这个值是2,最后再计算1-0+2,所以表达式的值是3

4. java除法计算

方法一:
double myNum2 = 111231.5585478;
java.math.BigDecimal b = new java.math.BigDecimal(myNum2);
double myNum3 = b.setScale(5, java.math.BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(myNum2);
System.out.println(myNum3);

方法二:
double d = 3.1465926;
String result = String.format("%.2f", d);
System.out.println(result);

5. java编程如何保留两位小数

方式一:

四樱哗舍五入
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
---------------------------------------------------------------

方式二:

java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你和渣要格式化的数字);

例:new java.text.DecimalFormat("#.00").format(3.1415926)

#.00 表示两位小数 #.0000四位小数 以此类推...

方式三:

double d = 3.1415926;

String result = String .format("%.2f");

%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型

方式四:

NumberFormat ddf1=NumberFormat.getNumberInstance() ;

void setMaximumFractionDigits(int digits)
digits 显示的数字位数
为格式化对象设定小数点后的显示唤颂悄的最多位,显示的最后位是舍入的

6. java怎么取实数中的小数部分

首先楼上那两位对于普通的使用场景来说基本是正确的。但是在一些需要精确结果的场景中(比如货币金额计算),double就会有问题了,比如:

(int)1023.99999999999999=1024;

再比如:

doublen1=0.03;
doublen2=0.02;
doublen3=n1-n2;
System.out.println(n3);//0.009999999999999998

所以如果需要精确安全的操作拿漏的话,需要用到这个类:java.math.BigDecimal

调用它的divideAndRemainder方法来进行计算,该计算可以理解为:进行一次保消拿烂留余数的除法运算。结果会返回一个BigDecimal类型且长度为2的数组,0下标的元素敏睁是该计算的商,1下标的元素是该结果的余数。

BigDecimaln4=newBigDecimal("1023.99999999999999");
BigDecimal[]result=n4.divideAndRemainder(BigDecimal.valueOf(1));
System.out.println(result[1].toString());//0.99999999999999

注意,构造BigDecimal对象的时候我使用的是字符串String类型的“1023.99999999999999
”,如果直接写1023.99999999999999的话会被认为是double类型的数,然后double类型的该值为1024.0,所以给字符串类型的值可以保证BigDecimal对象接收到的数就准确无误是我们心里想的数。

7. JAVA 中除法后小数精度问题

你说的这个问题涉及到数字精度问题,在程序中,数字运算总是低精度的向高精度的自动转化。比如(int)/(float)就会得到你想要的小数数位,这是由数字在计算机中的运算方式决定的。如果你用3/5.0或者3.0/5,你顷前就可以得到你想要的小数。
在计算机中,整型(int)和浮点(float,double)的表示形式各不相同,占用内存空间也不同,在运算时,为了得到正确的结果,就要进行对位,如果数据类型不一致,就要进行转化。在硬件层面上就是把占用内存少的整型向浮点转换,也就是为这个整型添加额外的字节参与运算,尽管这些字节中都是0,这是数字精度的问题。
现在是两个整形数,轮世运算时,计算机认为不需要腊乎肢进行数据类型的转化,所以就得到你见到的结果。

8. java中对除不尽的数怎么处理

1,java中因为有各种基本类型,所以还不存在除不尽一说此慧
2,java中困哪的除法计算有“/”,“森尺答%”第一个获得的是整除的结果,第二个获得的是余数,所以不存在除不尽。

9. java 两个数相除后四舍五入并保留两位小数有哪些方式


1 double f = 3.1516;
BigDecimal b = new BigDecimal(f);
2 double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()
new java.text.DecimalFormat("#.00").format(3.1415926)


3 double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。


4 Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0

热点内容
早期存储卡 发布:2024-11-02 14:26:50 浏览:988
配音秀缓存在手机哪里 发布:2024-11-02 14:23:27 浏览:294
linux下载gcc 发布:2024-11-02 14:13:47 浏览:344
写算法交易 发布:2024-11-02 13:57:09 浏览:208
安卓怎么下载鸿蒙 发布:2024-11-02 13:36:13 浏览:663
加密狗rsa 发布:2024-11-02 13:20:44 浏览:560
实用java教程 发布:2024-11-02 13:07:39 浏览:930
ide文件夹 发布:2024-11-02 12:51:37 浏览:559
python中字典的用法 发布:2024-11-02 12:40:42 浏览:28
安卓怎么下载zine 发布:2024-11-02 12:40:38 浏览:793