- 浏览: 726715 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (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 843在单线程的模 ... -
Java内存模型简单介绍
2019-08-19 19:52 743说到Java内存 ... -
java中线程挂起的几种方式
2019-08-16 18:43 1075在Java中使用线程的时候肯定会有线程挂起的 ... -
自定义线程池简单介绍
2019-08-16 11:37 870线程池的相关概念就不在这里说明了,百度一下有很 ... -
实现自己的spring boot starter
2019-04-04 14:59 883在使用spring boot开发的时候,我 ... -
使用POI实现合并行的导入
2019-03-01 17:24 2597在我们进行导入的时候难免不会遇到合并行的导入 ... -
Spring IOC设计原理解析
2019-01-08 14:02 987摘自https://www.cnblogs.com/ITt ... -
SpringBoot集成自定义HandlerMethodArgumentResolver参数初始值解析
2018-12-13 09:25 2152大部分摘抄自https://www.cnblogs.com/ ... -
关于spring cloud config加密EncryptionTooWeakException异常说明
2018-11-05 16:00 2112今天在使用spring cloud confi ... -
gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明
2018-07-23 15:42 4118在gradle中使用 ... -
SpringBoot+Activiti的serviceTask注入异常问题
2018-07-13 11:51 7419在使用springboot+activiti ... -
16进制与字符串的互转及转换为byte数组
2018-05-25 14:42 3163import java.io.ByteArrayOutput ... -
JVM学习总结
2018-01-29 17:00 1048JVM作为java的重要组成部分,在j ... -
利用JavaFX创建一个可以订阅发布的MQTT客户端桌面程序
2017-12-08 11:34 2037利用JavaFX我们可以创建出像Swing那样 ... -
java8新特性time类相关介绍
2017-10-30 15:46 1625java8已经出来 ... -
java动态添加外部jar包到classpath
2017-08-17 16:38 3082在项目开发过程中我们有时候需要动态的添加 ... -
java 10进制转16进制带ox格式输出
2017-07-14 16:36 2882摘自https://yq.aliyun.com/wenzha ... -
SpringBoot+thymeleaf简单实现登陆注册及记账功能
2017-06-26 10:58 12469本项目主要是使用了SpringBoot及其 ... -
Java 8的新特性—终极版
2017-05-25 16:42 901前言: Java 8 已经发 ... -
对\\uxx转换为unicode编码的\uxx
2017-03-10 16:17 1389在业务过程中难免会遇到字符串转换为16进制的u ...
相关推荐
你是否因为JS端的小数计算的精度不足而发愁过呢 其实有个不错的资源可以利用。 引用附件的JS,就可以轻松搞定JS的计算问题了。 使用例 <!-- function //+ alert(new BigDecimal("10").add(new BigDecimal("3E+...
BigDecimal的计算
主要介绍了Java中使用BigDecimal进行浮点数运算,需要的朋友可以参考下
bigdecimal加减乘除运算
javascript的数值精确计算类bigdecimal,改编自java的bigdecimal
NULL 博文链接:https://flashdream8.iteye.com/blog/687808
MyEditTextApplication输入框BigDecimal计算价格,实时输入计算价格并保留小数点后十位数字
BigDecimal类是一个大小数操作类,可以用来对超过16位有效位的数据进行精确的运算,在这里我们使用BigDecimal类来解决浮点数计算产生的精度丢失问题。 精度问题 在这里我们讨论一个问题:3 – 2.7 == 0.3 的值是什么...
BigDecimal计算,用于处理Java中的大的数据的运算
复杂的BigDecimal计算,需要开方的式子,可输入结果精确位数
Android 精确计算工具类。 /** * @Title: Arith.java * @Package com.uxun.pay.util * @Description: TODO(用一句话描述该文件做什么) * @author daiw * @date 2016-1-5 上午9:05:34 * @version V1.0 */ ...
主要介绍了如何使用BigDecimal进行精确运算,最后提供了一个工具类,该工具类提供加,减,乘,除运算
Java中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...
其中,BigDecimal 是一种高精度的十进制浮点数类型,适合处理大数值计算。在一些需求中,我们可能需要将 BigDecimal 值转换为 Integer 类型。这时,可以使用 BigDecimal 的 intValue() 方法进行转换。 当 ...
关于浮点数在计算机中的存储方式与精度丢失问题(float,double):https://blog.csdn.net/alzzw/article/details/108132830 可以用此类解决
BigDecimal工具类.docx
BigDecimal运算封装,里面封装了Integer和BigDecimal的"加减乘除法运算封装
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
java丢失精度,bigdecimal加减乘除
BigDecimal类,常用方法是用介绍