导航:首页 > 编程语言 > java精确计算

java精确计算

发布时间:2022-10-30 14:09:48

A. java中如何实现N个浮点数相加并确保其精确度

用BigDecimal类来计算,先用加法计算,再用结果除以1,通过devide除法方法来确认保留几位小数,如下例:

importjava.math.*;
publicclassDemo
{
publicstaticvoidmain(String[]args){
BigDecimalbig1=newBigDecimal(123456.23456);
BigDecimalbig2=newBigDecimal(123.456);
BigDecimalbig3=newBigDecimal(1);
BigDecimaltemp=big1.add(big2);
System.out.println(big1.divide(big3,5,BigDecimal.ROUND_HALF_UP));//保留5位小数,返回bigDecimal
}
}

B. JAVA中"math.hypot"有什么功能

math.hypot主要用于java的精确计算。一般的java方法计算出来的值会存在很小的误差。因为他是基于二进制而不是十进制。1/5 和 7/50 之类的分数可用十进制精确表示(分别是 0.2 和 0.14),但用二进制表示时,就会出现重复的分数。所以需要一个特定的方法来计算
,至于具体用法可以网络下math.hypot主要用法,相信能看懂,不过这个东西用的不多..

C. 用Java精确计算0.01与0.05的和并将结果输出到所有文件中

用double类型就可以吧,比如double num1=0.01 ;double 2=0.05 ; double he=num1+num2;System.out.println(he);

D. 请问:在Java语言中如何把一个浮点数精确到小数点后的某几位

--Math.round()
(double)(Math.round(sd3*10000)/10000.0);

这样为保持4位

(double)(Math.round(sd3*100)/100.0);

这样为保持2位.
--BigDecimal
//保留小数点后两位小数
publicdoubleNumber2(doublepDouble)
{
BigDecimalbd=newBigDecimal(pDouble);
BigDecimalbd1=bd.setScale(2,bd.ROUND_HALF_UP);
pDouble=bd1.doubleValue();
longll=Double.doubleToLongBits(pDouble);

returnpDouble;
}
格式化输出数字
--NumberFormat
--java.text包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题:
importjava.text.NumberFormat;
importjava.util.Locale;
publicclassDecimalFormat1{
publicstaticvoidmain(Stringargs[]){
//得到本地的缺省格式
NumberFormatnf1=NumberFormat.getInstance();
System.out.println(nf1.format(1234.56));
//得到德国的格式
NumberFormatnf2=
NumberFormat.getInstance(Locale.GERMAN);
System.out.println(nf2.format(1234.56));
}
}
--DecimalFormat
importjava.text.DecimalFormat;
importjava.util.Locale;
publicclassDecimalFormat2{
publicstaticvoidmain(Stringargs[]){
//得到本地的缺省格式
DecimalFormatdf1=newDecimalFormat("####.000");
System.out.println(df1.format(1234.56));
//得到德国的格式
Locale.setDefault(Locale.GERMAN);
DecimalFormatdf2=newDecimalFormat("####.000");
System.out.println(df2.format(1234.56));
}
}

E. Java里1.4/7=0.199998

小数在计算机中的存储是用2的负数次方表示的因此,十进制中的有限位数的小数在二进制时却是无限小数,比如0.1用就是一个无限循环的0.0001100110011001100。。。小数,实际存储中是不可能存放无限位数的因此就会产生舍入,产生误差。此外除法运算的算法也存在一定精度下舍入误差,因此最终看到的结果就是一个接近结果的小数近似值

F. java能精确到小数点的后多少位

java中double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。其实这个不只是java存在,是由计算机二级制架构决定的。高精度浮点计算,最好是先转换为整数计算后再转为小数。相对精度比较好。

G. 如何用java计算两个时间差,要精确到小时,比如2012-3-12 10:43:32 和 2012-3-12 11:00:00 相差0.几小时

代码:
public static void main(String[] args) throws Exception {
String date1 = "2012-3-12 10:43:32";
String date2 = "2012-3-12 11:00:00";
System.out.println("相差" + jisuan(date1, date2) + "小时");
}

public static double jisuan(String date1, String date2) throws Exception {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-M-d HH:mm:ss");
java.util.Date start = sdf.parse(date1);
java.util.Date end = sdf.parse(date2);
long cha = end.getTime() - start.getTime();
double result = cha * 1.0 / (1000 * 60 * 60);
return result;
}

运行结果:
相差0.27444444444444444小时

H. JAVA怎么计算百分比

int num1 = 7;

int num2 = 9;

// 创建一个数值格式化对象

NumberFormat numberFormat = NumberFormat.getInstance();

// 设置精确到小数点后2位

public String getPercent(int x,int total){

String result="";//接受百分比的值

double x_double=x*1.0;

double tempresult=x/total;

numberFormat.setMaximumFractionDigits(2);

String result = numberFormat.format((float) num1 / (float) num2 * 100);

System.out.println("num1和num2的百分比为:" + result + "%");

比较运算符

比较运算符属于二元运算符,用于程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型。当运算符对应的关系成立时,运算的结果为true,否则为false。比较运算符共有6个,通常作为判断的依据用于条件语句中。

Java解释器在没有生成任何对象的情况下,以main作为入口来执行程序。每个类中可以定义多个方法,但main方法只能有一个。关键字public表示访问权限,指明所有的类都可以使用这一方法。

以上内容参考:网络-Java

I. java如何进行精确运算

importjava.math.BigDecimal;publicclassArith{//默认除法运算精度privatestaticfinalintDEF_DIV_SCALE=10;//这个类不能实例化privateArith(){;}/***提供精确的加法运算。*@paramv1被加数*@paramv2加数*@return 两个参数的和*/publicstaticdoubleadd(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.add(b2).doubleValue();}/***提供精确的减法运算。*@paramv1被减数*@paramv2减数*@return 两个参数的差*/publicstaticdoublesub(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.subtract(b2).doubleValue();}/***提供精确的乘法运算。*@paramv1被乘数*@paramv2乘数*@return 两个参数的积*/publicstaticdoublemul(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.multiply(b2).doubleValue();}/***提供(相对)精确的除法运算,当发生除不尽的情况时,精确到*小数点以后10位,以后的数字四舍五入。*@paramv1被除数*@paramv2除数*@return 两个参数的商*/publicstaticdoublediv(doublev1, doublev2){returndiv(v1,v2,DEF_DIV_SCALE);}/***提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指*定精度,以后的数字四舍五入。

阅读全文

与java精确计算相关的资料

热点内容
行车记录仪安卓版怎么用 浏览:500
java是不是数字 浏览:180
php模拟浏览器环境 浏览:351
编程谁都能学会吗 浏览:407
使用国家反诈app都要开启什么 浏览:712
下载民宿APP有什么用 浏览:52
续子语pdf 浏览:385
2021年加密货币最新行情 浏览:162
nfs怎么加密ipsec 浏览:245
国二考试调用编译器运算选择题 浏览:750
同济大学高等数学pdf 浏览:234
延时的宏命令怎么设置 浏览:596
数据库有哪些加密 浏览:209
改之理反编译注册教程 浏览:391
什么是编译程序和翻译程序 浏览:208
python课程心得总结 浏览:17
派派中怎么看对方在哪个服务器 浏览:796
xp配置java环境变量配置 浏览:9
python中1到100怎么算 浏览:768
小度我想看程序员 浏览:508