科学计算法帮助类MathUtils
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的更多相关文章
- C#中如何防止Excel做科学计算法转换
C#中如何防止Excel做科学计算法转换 string style = @"<style>.text{mso-number-format:\@;}</style>& ...
- Double类型的数值 在写入excel时 如何去掉 科学计算法的 后面数值+ E的 情况
Double start = 20190724100000.000; 写入excel时 是 201907E+13 但想要输出的是 20190724100000 这种格式 Java在java.math包 ...
- 导出到Excel并且取消默认的科学计算法
导出Excel的代码很多,其中这种最简单: protected void btnDCAll_Click(object sender, EventArgs e) { ...
- pandas中一列含有多种数据类型的转换:科学计算法转浮点数、字符映射
import pandas as pd import re def getNum(x): """ 科学计数法和字符转浮点数 """ if r ...
- php将科学计算法得出的结果转换成原始数据
由于php最大只支持显示 15位因的数据运算,大于15位的2数加减乘除的数据的结果,会直接用科学计数法显示, 但在现实生活中,科学计数法不利于普通人识别,所以,本函数将:科学计数法的出的结果转换成原始 ...
- php 将科学计算法得出的结果转换成原始数据 NumToStr
由于php最大只支持显示 15位因的数据运算,大于15位的2数加减乘除的数据的结果,会直接用科学计数法显示, 但在现实生活中,科学计数法不利于普通人识别,所以,本函数将:科学计数法的出的结果转换成原始 ...
- 解决 PHPExcel 长数字串显示为科学计数
解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...
- oracle 将科学计数法数据转换为非科学计数法数据
oracle 自定义函数: CREATE OR REPLACE FUNCTION ConvertNumeric(rawData VARCHAR2) --用于返回转换科学计算法dhx RETURN VA ...
- 怎样批量把excel中已显示的科学计数法取消
作者:iamlaosong 把一文本文档拷贝到EXCEL中时,当中一列数字所有变成科学计数法,这些数事实上是条码号,不需进行运算,怎样能够取消科学计算法,将数字显示成原来的样子呢?一般方法例如以下: ...
随机推荐
- 深入浅出VC++串口编程之基于Win32 API
1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为CreateFile,其原型为: H ...
- OPC and .NET
Note: recent OPC standards, including Unified Architecture (UA) and Express Interface (Xi) were desi ...
- VirtualBox 安装虚拟机
- 试用log4jdbc
近日发现一个好东东log4jdbc,他是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息.log4jdbc使用SLF4J(Simple Logging Facade For Java)作为 ...
- 触发器系列(2) DataTrigger
触发条件: DataTrigger是以控件DataContext的属性作为触发条件 本例效果说明: <!--当值为1时将外边框的背景色改为黑色--> <!--当值为2时 改变透明度达 ...
- 如何解决Maven速度慢
注:oschina已失效 Maven 远程仓库 <mirror> <id>ui</id> <mirrorOf>central</mirrorOf& ...
- UIButton使用方法汇总
//按钮初始化类方法 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];//这里创建一个圆角矩形的按钮 //按 ...
- uestc 360(区间合并)
题意:有一个长度为n的序列.然后有两种操作,Q a b是输出区间a b内最长上升子序列的长度.A a b c是把区间a b内全部数字加上c. 题解:用线段树维护区间的最长上升子序列长度,那么一个区间的 ...
- LeetCode 84. Largest Rectangle in Histogram 单调栈应用
LeetCode 84. Largest Rectangle in Histogram 单调栈应用 leetcode+ 循环数组,求右边第一个大的数字 求一个数组中右边第一个比他大的数(单调栈 Lee ...
- Debug时检测到Loaderlock的解决办法
昨天遇到了Loaderlock的问题. 出错信息为:检测到LoaderLock,正试图在OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码,这样会导致应用程序挂起. ...