- 浏览: 735919 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (173)
- JAVA (54)
- ORACLE (3)
- JAVASCRIPT (7)
- STRUCT2 (4)
- SPRING (12)
- EXTJS (7)
- JQUERY (4)
- SQLSERVER (10)
- IBATIS (1)
- MYSQL (6)
- JS (1)
- HTML5 (1)
- TOMCAT (3)
- JSP (1)
- HTML (1)
- 数据库 (2)
- HTTP (3)
- MAVEN (2)
- MyBatis (2)
- IDEA (1)
- spring boot (24)
- spring security (1)
- RestEasy (1)
- KAFKA (4)
- MongoDB (2)
- NODEJS (1)
- 非技术 (3)
- logback (1)
- DSL (1)
- thymeleaf (1)
- RedisTemplate (12)
- spring cloud (39)
- fastdfs (1)
- Disruptor (2)
- JAVAFX (1)
- exe4j (1)
- JVM (1)
- ZOOKEEPER (4)
- activiti (1)
- GRADLE (1)
- spring cloud config (7)
- poi (1)
- spring cloud eureka (7)
- Rabbit MQ (1)
- MQ (1)
- Centos (1)
- nifi (1)
- dubbo (1)
最新评论
-
yangganboy:
yangganboy 写道可以看我简书写的 java 运行时修 ...
java动态添加外部jar包到classpath -
yangganboy:
可以看我简书写的 java 运行时修改classpath 添加 ...
java动态添加外部jar包到classpath -
neufjava:
感谢您的分享!参考您的文章解决了困扰我一天的配置问题。再次感谢 ...
FastDFS文件系统的安装使用及代码的调用(单个节点) -
wo_niu:
写的非常
RedisTemplate常用集合使用说明-boundSetOps(九) -
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
部分介绍使用IDEA的rest client
//用于实现浮点数的精确计算
//****
//import java.util.Scanner;
import java.math.BigDecimal;
// 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
// 确的浮点数运算,包括加减乘除和四舍五入。
//在BigDecimal中只能用String来构造
public class Arith{
//默认除法运算精度
privatestatic final int DEF_DIV_SCALE = 10;
//这个类不能实例化
privateArith(){
}
//提供精确的加法运算。
//@param v1 被加数
//@param v2 加数
//@return 两个参数的和
publicstatic double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
//提供精确的减法运算。
//@param v1 被减数
//@param v2 减数
//@return 两个参数的差
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
//提供精确的乘法运算。
//@param v1 被乘数
//@param v2 乘数
// @return两个参数的积
publicstatic double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
//提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
//小数点以后10位,以后的数字四舍五入。
//@paramv1 被除数
//@param v2 除数
//@return 两个参数的商
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
//提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
//定精度,以后的数字四舍五入。
//@param v1 被除数
//@param v2 除数
// @param scale表示表示需要精确到小数点以后几位。
// @return 两个参数的商
publicstatic double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"只能为整数或0(The scale must be a positive integer or zero)");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
//提供精确的小数位四舍五入处理。
//@param v 需要四舍五入的数字
//@paramscale 小数点后保留几位
// @return 四舍五入后的结果
publicstatic double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
returnb.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
publicstatic void main(String [] args) {
Scanner input = new Scanner(System.in);
Arith arith = newArith();
boolean isExit = true;
while(isExit) {
System.out.println("这里有以下几种运算,请你选择你要的运算:\n"
+"1.加法\n2.减法\n3.乘法\n4.除法\n5.指定小数点位数的除法\n6.把数字精确到指定位数");
int choose = input.nextInt();
switch(choose) {
case 1 :
System.out.println("你选择了加法运算!");
System.out.print("请输入你的第一个数:");
doublev1 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev2 = input.nextDouble();
System.out.println(arith.add(v1,v2));
break;
case2 :
System.out.println("你选择了减法运算!");
System.out.print("请输入你的第一个数:");
doublev3 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev4 = input.nextDouble();
System.out.println(arith.sub(v3,v4));
break;
case3 :
System.out.println("你选择了乘法运算!");
System.out.print("请输入你的第一个数:");
doublev5 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev6 = input.nextDouble();
System.out.println(arith.mul(v5,v6));
break;
case4 :
System.out.println("你选择了除法运算!");
System.out.print("请输入你的第一个数:");
doublev7 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev8 = input.nextDouble();
System.out.println(arith.div(v7,v8));
break;
case 5 :
System.out.println("你选择了指定位数的除法运算!");
System.out.print("请输入你的第一个数:");
doublev9 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev10 = input.nextDouble();
System.out.print("请输入保留小数点的位数:");
intscale = input.nextInt();
System.out.println(arith.div(v9,v10,scale));
break;
case6 :
System.out.println("你选择了把数字精确到指定位数运算!");
System.out.print("请输入你的第一个数:");
doublev11 = input.nextDouble();
System.out.print("请输入保留小数点的位数:");
intscale1 = input.nextInt();
System.out.println(arith.round(v11,scale1));
break;
default:
System.out.println("没有你所要的选择算法");
}
System.out.print("你是否需要重新进行下次计算(y/n)");
String check = input.next();
if(check.equalsIgnoreCase("n")) {
isExit = false;
break;
}
}
}
}
//****
//import java.util.Scanner;
import java.math.BigDecimal;
// 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
// 确的浮点数运算,包括加减乘除和四舍五入。
//在BigDecimal中只能用String来构造
public class Arith{
//默认除法运算精度
privatestatic final int DEF_DIV_SCALE = 10;
//这个类不能实例化
privateArith(){
}
//提供精确的加法运算。
//@param v1 被加数
//@param v2 加数
//@return 两个参数的和
publicstatic double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
//提供精确的减法运算。
//@param v1 被减数
//@param v2 减数
//@return 两个参数的差
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
//提供精确的乘法运算。
//@param v1 被乘数
//@param v2 乘数
// @return两个参数的积
publicstatic double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
//提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
//小数点以后10位,以后的数字四舍五入。
//@paramv1 被除数
//@param v2 除数
//@return 两个参数的商
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
//提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
//定精度,以后的数字四舍五入。
//@param v1 被除数
//@param v2 除数
// @param scale表示表示需要精确到小数点以后几位。
// @return 两个参数的商
publicstatic double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"只能为整数或0(The scale must be a positive integer or zero)");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
//提供精确的小数位四舍五入处理。
//@param v 需要四舍五入的数字
//@paramscale 小数点后保留几位
// @return 四舍五入后的结果
publicstatic double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
returnb.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
publicstatic void main(String [] args) {
Scanner input = new Scanner(System.in);
Arith arith = newArith();
boolean isExit = true;
while(isExit) {
System.out.println("这里有以下几种运算,请你选择你要的运算:\n"
+"1.加法\n2.减法\n3.乘法\n4.除法\n5.指定小数点位数的除法\n6.把数字精确到指定位数");
int choose = input.nextInt();
switch(choose) {
case 1 :
System.out.println("你选择了加法运算!");
System.out.print("请输入你的第一个数:");
doublev1 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev2 = input.nextDouble();
System.out.println(arith.add(v1,v2));
break;
case2 :
System.out.println("你选择了减法运算!");
System.out.print("请输入你的第一个数:");
doublev3 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev4 = input.nextDouble();
System.out.println(arith.sub(v3,v4));
break;
case3 :
System.out.println("你选择了乘法运算!");
System.out.print("请输入你的第一个数:");
doublev5 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev6 = input.nextDouble();
System.out.println(arith.mul(v5,v6));
break;
case4 :
System.out.println("你选择了除法运算!");
System.out.print("请输入你的第一个数:");
doublev7 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev8 = input.nextDouble();
System.out.println(arith.div(v7,v8));
break;
case 5 :
System.out.println("你选择了指定位数的除法运算!");
System.out.print("请输入你的第一个数:");
doublev9 = input.nextDouble();
System.out.print("请输入你的第二个数:");
doublev10 = input.nextDouble();
System.out.print("请输入保留小数点的位数:");
intscale = input.nextInt();
System.out.println(arith.div(v9,v10,scale));
break;
case6 :
System.out.println("你选择了把数字精确到指定位数运算!");
System.out.print("请输入你的第一个数:");
doublev11 = input.nextDouble();
System.out.print("请输入保留小数点的位数:");
intscale1 = input.nextInt();
System.out.println(arith.round(v11,scale1));
break;
default:
System.out.println("没有你所要的选择算法");
}
System.out.print("你是否需要重新进行下次计算(y/n)");
String check = input.next();
if(check.equalsIgnoreCase("n")) {
isExit = false;
break;
}
}
}
}
发表评论
-
如何保证在Java多线程中的原子性操作?
2019-08-27 18:46 924在单线程的模 ... -
Java内存模型简单介绍
2019-08-19 19:52 795说到Java内存 ... -
java中线程挂起的几种方式
2019-08-16 18:43 1120在Java中使用线程的时候肯定会有线程挂起的 ... -
自定义线程池简单介绍
2019-08-16 11:37 911线程池的相关概念就不在这里说明了,百度一下有很 ... -
实现自己的spring boot starter
2019-04-04 14:59 933在使用spring boot开发的时候,我 ... -
使用POI实现合并行的导入
2019-03-01 17:24 2696在我们进行导入的时候难免不会遇到合并行的导入 ... -
Spring IOC设计原理解析
2019-01-08 14:02 1046摘自https://www.cnblogs.com/ITt ... -
SpringBoot集成自定义HandlerMethodArgumentResolver参数初始值解析
2018-12-13 09:25 2252大部分摘抄自https://www.cnblogs.com/ ... -
关于spring cloud config加密EncryptionTooWeakException异常说明
2018-11-05 16:00 2149今天在使用spring cloud confi ... -
gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明
2018-07-23 15:42 4170在gradle中使用 ... -
SpringBoot+Activiti的serviceTask注入异常问题
2018-07-13 11:51 7551在使用springboot+activiti ... -
16进制与字符串的互转及转换为byte数组
2018-05-25 14:42 3247import java.io.ByteArrayOutput ... -
JVM学习总结
2018-01-29 17:00 1083JVM作为java的重要组成部分,在j ... -
利用JavaFX创建一个可以订阅发布的MQTT客户端桌面程序
2017-12-08 11:34 2104利用JavaFX我们可以创建出像Swing那样 ... -
java8新特性time类相关介绍
2017-10-30 15:46 1674java8已经出来 ... -
java动态添加外部jar包到classpath
2017-08-17 16:38 3157在项目开发过程中我们有时候需要动态的添加 ... -
java 10进制转16进制带ox格式输出
2017-07-14 16:36 2933摘自https://yq.aliyun.com/wenzha ... -
SpringBoot+thymeleaf简单实现登陆注册及记账功能
2017-06-26 10:58 12540本项目主要是使用了SpringBoot及其 ... -
Java 8的新特性—终极版
2017-05-25 16:42 929前言: Java 8 已经发 ... -
对\\uxx转换为unicode编码的\uxx
2017-03-10 16:17 1478在业务过程中难免会遇到字符串转换为16进制的u ...
相关推荐
这篇博客将深入探讨`BigDecimal`的使用,以及如何通过它来实现精确计算。 `BigDecimal`是Java `java.math`包下的一个类,它提供了任意精度的有符号十进制数。其设计目标是支持任意精度的算术运算,确保结果的精确性...
在进行高精度计算时,BigDecimal 避免了浮点数计算的精度问题,提供了更精确的结果。需要注意的是,所有涉及到 BigDecimal 的运算都会创建新的对象,所以频繁操作可能会带来性能影响。为了优化性能,可以使用 `...
在Java中,`BigDecimal` 类提供了对超过16位有效数字的十进制数进行精确算术运算的能力。它适用于金融计算、科学计算等场景,在这些场景中,使用浮点数(如 `float` 和 `double`)可能会因为精度丢失而导致错误的...
本文将详细介绍JavaScript版的`BigDecimal`类库,以及如何在JavaScript环境中实现精确计算。 JavaScript版的`BigDecimal`类库是基于Java原版`BigDecimal`的改编,旨在提供与Java版本相似的功能,以支持大整数和任意...
对于那些需要更高精度的计算,比如金融计算,通常推荐使用特定的数值类型,例如Java中的BigDecimal,它不依赖于IEEE 754标准的浮点数表示,而是以任意精度来表示小数,这虽然会牺牲一些性能,但能提供更精确的结果。...
BigDecimal是一种可以处理任意精度的十进制浮点数的数据类型,它通常用于金融或会计等需要高精度计算的领域,因为在这些场景中,浮点数的精度丢失可能导致错误的结果。 在计算机科学中,浮点数(如`float`和`double...
例如,`DecimalConvertUtils.java`可能就是一个用于转换和操作`BigDecimal`的工具类,可能包含了将基本类型的浮点数转换为`BigDecimal`,以及进行加减乘除、取模等运算的方法。 `BigDecimal`类提供了丰富的API,如`...
在JavaScript编程语言中,处理大型数字的精确计算是一项挑战,因为JavaScript的内置Number类型在进行大整数或高精度浮点数运算时容易出现精度损失。为了解决这个问题,开发者通常会引入第三方库,比如"BigDecimal.js...
在Java编程语言中,BigDecimal类是用于处理高精度、大范围浮点数的工具,它在需要精确计算的场景下非常关键。BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇...
标题"JavaScript 精确计算(2)"暗示了这是一个系列教程的第二部分,专注于如何在JavaScript中实现精准的数学计算。 在这个主题中,我们可以探讨以下几个关键知识点: 1. **浮点数的不精确性**:JavaScript中的...
`BigDecimal` 用于处理精确的浮点数运算,适合财务或金融计算,因为它可以避免浮点数计算中的精度问题。而 `Integer` 是 Java 中的整数类型,它只能存储整数值。在某些情况下,我们可能需要将 `BigDecimal` 对象转换...
标题中的"Java 精确计算 - double-float-String"指向的是Java中处理浮点数(double和float)以及字符串表示的数值时可能遇到的精度问题,以及如何通过特定方法实现精确计算。描述中提到的链接指向了一个具体的博客...
在实际使用BigDecimal时,要确保理解其性能开销,因为它比浮点数运算慢得多,适用于需要精确计算的场景,如财务计算、精确比例计算等。在不需要精确计算的场合,仍然推荐使用float和double以获取更好的性能。
在Java编程语言中,`BigDecimal`类是用于表示和操作大数(通常涉及财务或精确数学计算)的重要工具。由于浮点数(如`float`和`double`)在计算机中是以近似值存储的,这可能导致计算结果的不精确性,尤其是在进行...
它可以处理非常大的数字以及需要精确计算的场景,例如财务计算中常见的货币值。 ### 1.2 BigDecimal的主要用途 - **金融计算**:由于货币计算通常需要非常高的精度,BigDecimal非常适合这类应用场景。 - **科学...
BigDecimal是一种可以表示任意精度的十进制浮点数的类,主要用于财务、货币和其他需要精确计算的场景。在Java中,有内置的`java.math.BigDecimal`类,但JavaScript原生并不支持这样的数据类型。因此,"js_bigdecimal...
在Python中虽然没有直接对应的类,但理解`BigDecimal`的工作原理对于处理需要精确计算的场景是很有帮助的。本篇文章将详细探讨`BigDecimal`在加减乘除运算中的应用及其注意事项。 首先,`BigDecimal`对象的初始化有...
}}这段代码中,我们使用了BigDecimal的乘法操作multiply(),它允许我们进行精确的乘法计算,避免了浮点数计算中的误差。同样,我们也使用了减法操作subtract(),来进行精确的减法运算。在实际开发中,BigDecimal类...
1. **高精度浮点数**:与`BigInteger`类似,`BigDecimal`适用于需要精确浮点数计算的场景,如财务和科学计算。它避免了双精度浮点数(`double`)可能出现的舍入误差。 2. **精度控制**:`BigDecimal`的精度可以通过...
例如,Python有`decimal`模块用于高精度浮点数运算,而Java提供了`BigDecimal`类。 5. **工具的使用**: 标签中的“工具”可能指的是用来检查和处理浮点数精度的工具,比如`printf`格式化输出在C语言中可以控制...