import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode; /**
* 科学计算数字的帮助类
* @author yzl
*
*/
public class MathUtils {
/**
* 返回科学计算后的乘法结果
* @param val1
* @param val2
* @param mc 精度
* @param more 更多
* @return
*/
public static double multiply(double val1,double val2,int mc,double... more) {
if(val1==0 || val2==0) return 0;
BigDecimal bg1 = new BigDecimal(val1);
BigDecimal bg2 = new BigDecimal(val2);
BigDecimal result = new BigDecimal(0); if(more.length>0){
for(int i=0,len=more.length; i<len; i++){
if(i<len-1){
result = result.multiply(new BigDecimal(more[i]));
}else{
result = result.multiply(new BigDecimal(more[i]), new MathContext(mc,RoundingMode.HALF_UP));
}
}
}else{
result = bg1.multiply(bg2, new MathContext(mc,RoundingMode.HALF_UP));
} return result.doubleValue();
}
/**
* 返回科学计算后的除法结果
* @param fz 分子
* @param fm 分母
* @param mc 精度
* @param more 更多
* @return
*/
public static double divide(double fz,double fm,int mc,double... more) {
if(fz==0 || fm==0) return 0;
BigDecimal bg1 = new BigDecimal(fz);
BigDecimal bg2 = new BigDecimal(fm);
BigDecimal result = new BigDecimal(0); if(more.length>0){
for(int i=0,len=more.length; i<len; i++){
if(i<len-1){
result = result.divide(new BigDecimal(more[i]));
}else{
result = result.divide(new BigDecimal(more[i]), new MathContext(mc,RoundingMode.HALF_UP));
}
}
}else{
result = bg1.divide(bg2, new MathContext(mc,RoundingMode.HALF_UP));
} return result.doubleValue();
} /**
* 返回科学计算后的减法结果
* @param val1
* @param val2
* @param mc 精度
* @param more 更多
* @return
*/
public static double subtract(double val1,double val2,int mc,double... more) {
if(val2==0) return val1;
BigDecimal bg1 = new BigDecimal(val1);
BigDecimal bg2 = new BigDecimal(val2);
BigDecimal result = new BigDecimal(0); if(more.length>0){
for(int i=0,len=more.length; i<len; i++){
if(i<len-1){
result = result.subtract(new BigDecimal(more[i]));
}else{
result = result.subtract(new BigDecimal(more[i]), new MathContext(mc,RoundingMode.HALF_UP));
}
}
}else{
result = bg1.subtract(bg2, new MathContext(mc,RoundingMode.HALF_UP));
} return result.doubleValue();
} /**
* 返回科学计算后的加法结果
* @param val1
* @param val2
* @param mc 精度
* @param more 更多
* @return
*/
public static double add(double val1,double val2,int mc,double... more) {
BigDecimal bg1 = new BigDecimal(val1);
BigDecimal bg2 = new BigDecimal(val2);
BigDecimal result = new BigDecimal(0); if(more.length>0){
for(int i=0,len=more.length; i<len; i++){
if(i<len-1){
result = result.add(new BigDecimal(more[i]));
}else{
result = result.add(new BigDecimal(more[i]), new MathContext(mc,RoundingMode.HALF_UP));
}
}
}else{
result = bg1.add(bg2, new MathContext(mc,RoundingMode.HALF_UP));
} return result.doubleValue();
}
}

科学计算法帮助类MathUtils的更多相关文章

  1. C#中如何防止Excel做科学计算法转换

    C#中如何防止Excel做科学计算法转换  string style = @"<style>.text{mso-number-format:\@;}</style>& ...

  2. Double类型的数值 在写入excel时 如何去掉 科学计算法的 后面数值+ E的 情况

    Double start = 20190724100000.000; 写入excel时 是 201907E+13 但想要输出的是 20190724100000 这种格式 Java在java.math包 ...

  3. 导出到Excel并且取消默认的科学计算法

    导出Excel的代码很多,其中这种最简单: protected void btnDCAll_Click(object sender, EventArgs e)        {            ...

  4. pandas中一列含有多种数据类型的转换:科学计算法转浮点数、字符映射

    import pandas as pd import re def getNum(x): """ 科学计数法和字符转浮点数 """ if r ...

  5. php将科学计算法得出的结果转换成原始数据

    由于php最大只支持显示 15位因的数据运算,大于15位的2数加减乘除的数据的结果,会直接用科学计数法显示, 但在现实生活中,科学计数法不利于普通人识别,所以,本函数将:科学计数法的出的结果转换成原始 ...

  6. php 将科学计算法得出的结果转换成原始数据 NumToStr

    由于php最大只支持显示 15位因的数据运算,大于15位的2数加减乘除的数据的结果,会直接用科学计数法显示, 但在现实生活中,科学计数法不利于普通人识别,所以,本函数将:科学计数法的出的结果转换成原始 ...

  7. 解决 PHPExcel 长数字串显示为科学计数

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  8. oracle 将科学计数法数据转换为非科学计数法数据

    oracle 自定义函数: CREATE OR REPLACE FUNCTION ConvertNumeric(rawData VARCHAR2) --用于返回转换科学计算法dhx RETURN VA ...

  9. 怎样批量把excel中已显示的科学计数法取消

    作者:iamlaosong 把一文本文档拷贝到EXCEL中时,当中一列数字所有变成科学计数法,这些数事实上是条码号,不需进行运算,怎样能够取消科学计算法,将数字显示成原来的样子呢?一般方法例如以下: ...

随机推荐

  1. 关于TFS2010 远程无法创建团队项目的若干问题总结

    今天遇到一个TFS的问题,折腾了好几个小时,故将其记录,给有遇到类似问题的朋友一些参考. 1.本文前提:服务器端只安装了TFS2010,本地没有安装Visual Studio 2010,因此不能在服务 ...

  2. Oracle 11g 错误:ORA-28002: the password will expire within 7 days 解决方法

    ERROR:ORA-28002: the password will expire within 7 days 错误是提示password快过期了,有两个办法解决问题. 一. 改动已经报错用户的pas ...

  3. 【微信小程序】处理时间格式,时间戳转化展示时间格式问题,调用外部js的默认方法function的问题

    默认的 小程序中new Date()显示的时间是这样的: 格式化时间的显示怎么做: 小程序的根目录下util目录下默认有一个util.js文件 其中util.js文件内容是: //数据转化 funct ...

  4. .NET:“事务、并发、并发问题、事务隔离级别、锁”小议,重点介绍:“事务隔离级别"如何影响 “锁”?

    备注 我们知道事务的重要性,我们同样知道系统会出现并发,而且,一直在准求高并发,但是多数新手(包括我自己)经常忽略并发问题(更新丢失.脏读.不可重复读.幻读),如何应对并发问题呢?和线程并发控制一样, ...

  5. Selenium2+python自动化37-爬页面源码(page_source)

    前言 有时候通过元素的属性的查找页面上的某个元素,可能不太好找,这时候可以从源码中爬出想要的信息.selenium的page_source方法可以获取到页面源码. selenium的page_sour ...

  6. Rete算法

    RETE算法介绍一. rete概述Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关.Rete是拉丁文,对应英文是net,也就是网络.Rete算法通过形成一个rete网络进行模式匹配,利 ...

  7. JQuery实战--能够编辑的表格

    廊坊下雪了.15年的第二场雪.比14的来的稍晚一些.停靠在11教门前的自行车.成了廊坊师范学院最漂亮的风景线.还记得以前学习css的时候.就以前接触过怎样编写设计一些表格和表单的样式,比如怎样设计表格 ...

  8. Android - 错误:&quot;No resource found that matches the given name android:Theme.Material&quot;

    Android - 错误:"No resource found that matches the given name android:Theme.Material" 本文地址:  ...

  9. MySQL运行状态show status中文详解

    状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...

  10. Strings of Power

    B. Strings of Power Volodya likes listening to heavy metal and (occasionally) reading. No wonder Vol ...