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. echarts在数据改变后,折线图并没有全部刷新

    在做一个BI项目的时候,图表需要区分国内和国外显示.当前用户所属企业具备国内外权限的时候,展示两条图表,当查看其他企业需要根据选中的企业所具备的权限改变图表.即刚开始显示两条折线图,更改选择条件并重新 ...

  2. HDU 2604 Queuing 矩阵高速幂

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  3. msgpack配合FIREDAC传输多表数据

    msgpack配合FIREDAC传输多表数据 procedure TForm1.Button1Click(Sender: TObject);var ms, ms2: TMemoryStream; pa ...

  4. Extjs 文件上传

    function fromExcel(){ var dxjgdm_sel = Ext.get("dxjgdm").getValue(); var dxjglx_sel = Ext. ...

  5. 仿LOL项目开发第九天

    仿LOL项目开发第九天 by 草帽 OK,今天我们完全换了一种风格,抛弃了Unity3d的c#语法,我们来写写java的项目. 说到java服务器,当然有些人可能鄙视java的服务器速度太慢,但是相对 ...

  6. Git 学习(八)其他

    Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼:  包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...

  7. SystemVerilog Event Scheduling Algorithm

    While simulating System Verilog design and its test-bench including assertions, events has to be dyn ...

  8. 关于DLL文件和EXE文件不在同一目录下的设置【转】

    https://www.cnblogs.com/chaosimple/archive/2012/08/13/2636181.html 关于DLL文件和EXE文件不在同一目录下的设置 在开发程序结束后, ...

  9. 你应该知道的30个jQuery代码开发技巧

    1. 创建一个嵌套的过滤器 .filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2. 重用你的元素查询 var ...

  10. IDEA是如何导入项目的,及启动导入项目遇到的问题:无法加载主类的一连串问题

    1.启动报错误: 找不到或无法加载主类 org.spring.springboot.Application 可能在工程下面有多个module,然后,module里面的iml配置文件不止一个,删除留主的 ...