java 高效加减乘除_java简单加减乘除
展开全部
使用BigDecimal并且一定要e68a84e8a2ad3231313335323631343130323136353331333361303564用String来够造。
实现方法如下:
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static 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 两个参数的积
*/
public static 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位,以后的数字四舍五入。
* @param v1 被除数
* @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 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static 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");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
分享
本回答由电脑网络分类达人 高德宝认证
其他类似问题
2009-02-08加减乘除运算(Java)14
2010-06-22Java实现有界面的简单的两个整数之间的加减乘除运算
2009-09-21myeclipse中java的加减乘除运算1
2011-05-27用java编写计算器,,,要求加减乘除等运算。。。1
2011-09-15java中的String型怎么实现数学的加减乘除运算?10
更多关于java简单加减乘除的问题>>
为您推荐:
举报| 2009-02-24 03:00
#为什么很多走失的孩子无法找回?#
提问者采纳
import java.util.Scanner;
class MakeOperation
{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
Count count=new Count();
System.out.print("请输入你要运算的第一个数:");
count.one=input.next();
System.out.print("请输入你要进行运算的运算符:");
count.fu=input.next();
System.out.print("请输入你要运算的第二个数:");
count.two=input.next();
if(count.fu.equals("+")){
count.outcome=Float.parseFloat(count.one)+Float.parseFloat(count.two)+"";
// 将字符串解析为数字,注意下如果输入的不是数字程序会报错,缺少健壮性代码 }
System.out.println(count);
}
}
class Count{
String one;
String two;
String fu;
String outcome; // 结果
public String toString(){
return one+fu+two+"="+outcome;
}
}
下面的代码修改了Count类里域的部分参数,增加了一个用于检查输入是否正确的类。
import java.util.Scanner;
class MakeOperation
{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
Count count=new Count();
CheckOperation checkOpera=new CheckOperation();
System.out.print("请输入你要运算的第一个数:");
count.one=checkOpera.checkNum(input);
System.out.print("请输入你要进行运算的运算符:");
String[] operators={"+","-","*","/"};
count.fu=checkOpera.checkOperator(input,operators);
System.out.print("请输入你要运算的第二个数:");
count.two=checkOpera.checkNum(input);
if("+".equals(count.fu)){
count.outcome=count.one+count.two;
System.out.println(count);
}
}
}
class Count{
float one;
float two;
String fu;
float outcome; // 结果
public String toString(){
return one+fu+two+"="+outcome;
}
}
class CheckOperation{
/*验证数字,输错了会提示用户重新输入*/
public float checkNum(Scanner input){
float num=0f;
try {
num=Float.parseFloat(input.next());
} catch (NumberFormatException e) {
System.out.print("请输入正确的数字: ");
num=checkNum(input); //直至获取到正确的值
}
return num;
}
/*验证输入的符号是否正确*/
public String checkOperator(Scanner input,String[] operators){
String opera=null;
boolean judge=true;
opera=input.next();
for(String operator:operators){
if(operator.equals(opera)) judge=false;
}
if(judge) {
System.out.print("请输入正确的运算符: ");
opera=checkOperator(input,operators);
}
return opera;
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java 高效加减乘除_java简单加减乘除相关推荐
- java算软件工程_Java简单计算器的实现
Java简易计算器的实现,供大家参考,具体内容如下 操作流程 用户通过输入要被运算的数字和运算符,进行数字的运算,例如用户输入2+2则会输出4. 加法运算截图 减法运算截图 乘法运算截图 除法运算截图 ...
- java可视化日历_Java简单可视化日历程序
涉及知识: 一.Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单 ...
- java正则表达式爬虫_Java简单爬虫系列(3)---正则表达式和Java正则API的使用
上一篇内容写了如何请求资源,那么资源请求下载之后我们就要对它就行解析了,解析之前我们先熟悉一下正则表达式 正则表达式在平常使用时还是很广泛的,比如说表单输入验证,验证手机号邮箱之类,Java的字符串匹 ...
- java swing 示例_JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- Java zset 应用_Java简单使用redis-zset实现排行榜
简单使用redis-zset实现排行榜 此方法实现一个根据某字段的查询次数进行排行,查询的次数越多排行越前(从大到小排序),适用于初学者 1.添加依赖 org.springframework.boot ...
- java五子棋教程_java 简单五子棋
1.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目需要满足怎样的需求. 五子棋需要满足什么需求呢,首先我们要有确定打算下棋的界面,还要有实现下棋的功能,下了棋 ...
- java .z文件_Java简单的读写文件
这篇随笔记录了简单的文件输入与输出,是我在学习<Java核心技术卷Ⅰ>第61页到第62页时的一些整理.只用到了极简单的方法. 文件读取 要想对文件进行读取,就需要用一个File对象构造一个 ...
- java高效编程_Java高效编程
非可变类就是类的实例不能被修改的类.如String. 非可变类有很多好的存在理由非可变类更容易设计.实现和使用 不易犯错误 更安全 为了使类成为非可变的,要遵循下面5条原则不要提供任何修改对象的方法. ...
- java高效代码_Java工程师该如何编写高效代码?
在调试 JS 代码时,很多人倾向于使用 alert() 或者 console.log() 方法来输出信息,正如某些 Java 程序员喜欢在调试代码时使用System.out.println() 输出信 ...
最新文章
- ComplexHeatmap绘制热图(一)
- Arch Linux 指南——安装基本系统
- 【高级绘图】MATLAB应用实战系列(八十)-圣诞前夜,想表白女神?教你如何用MATLAB绘制圣诞树动态图(附MATLAB代码)
- 节能原理 复习(能量平衡+热电联产+联合循环)
- MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
- android hide方法 末班,android 如何引用@hide(隐藏)的类,方法和常量?
- 替换元素节点replaceChild()
- (转)Hibernate的配置详解
- 第18天:京东网页头部制作
- 太阳能充电调节代码_储能管理系统对于充电站的作用
- 基于Linux的小项目-在线词典
- 禁忌搜索算法求解TSP问题python实现
- 日常工作记录---在虚拟机中进行slam建图
- 文件或目录损坏且无法读取android studio
- OpenGL 加载DDS文件(压缩纹理)
- sort()sorted()
- Netlogon 特权提升漏洞(CVE-2020-1472)原理分析与验证
- 【机器学习】有监督、无监督、自监督、半监督、弱监督的区别
- 空调遥控器c语言源码,51单片机格力空调遥控器设计源码
- 甲骨文献相关资料持续分享
热门文章
- 彩色手绘元宵节插画风素材图片
- UI图标设计素材|风格多样的图标
- 有了优秀的可临摹PSD分层模板|瞬间提升海报质感!
- APP搜索框的样式素材模板,可临摹的好素材
- c语言中如何让鼠标在一个窗口之外不能点击_Excel系列教程:如何自动填充单元格...
- python能做页面加载动画吗_HTML+CSS实现页面加载(loading)动画效果
- Linux面试题100道
- highgui java opencv_OpenCV在C Qt应用程序中的highgui
- vscode生成vue模板快捷键_VSCode一键生成.vue模版
- python可以处理的文件类型_Python学习笔记之数据类型与文件处理