请问:在Java语言中如何把一个浮点数精确到小数点后的某几位?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问:在Java语言中如何把一个浮点数精确到小数点后的某几位?相关的知识,希望对你有一定的参考价值。
在Java语言中输出一个浮点数,它会给出默认的小数。我现在要求精确到小数点后的某几位怎么办?如下面的一道题目,求a=1/1! 1/2! 1/3! ...... 1/n!且a精确到小数点后5位。详细一点。
-- Math.round()(double) (Math.round(sd3*10000)/10000.0);
这样为保持4位
(double) (Math.round(sd3*100)/100.0);
这样为保持2位.-- BigDecimal
//保留小数点后两位小数
public double Number2(double pDouble)
BigDecimal bd=new BigDecimal(pDouble);
BigDecimal bd1=bd.setScale(2,bd.ROUND_HALF_UP);
pDouble=bd1.doubleValue();
long ll = Double.doubleToLongBits(pDouble);
return pDouble;
格式化输出数字-- NumberFormat
--java.text 包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题:
import java.text.NumberFormat;
import java.util.Locale;
public class DecimalFormat1
public static void main(String args[])
// 得到本地的缺省格式
NumberFormat nf1 = NumberFormat.getInstance();
System.out.println(nf1.format(1234.56));
// 得到德国的格式
NumberFormat nf2 =
NumberFormat.getInstance(Locale.GERMAN);
System.out.println(nf2.format(1234.56));
-- DecimalFormat
import java.text.DecimalFormat;
import java.util.Locale;
public class DecimalFormat2
public static void main(String args[])
// 得到本地的缺省格式
DecimalFormat df1 = new DecimalFormat("####.000");
System.out.println(df1.format(1234.56));
// 得到德国的格式
Locale.setDefault(Locale.GERMAN);
DecimalFormat df2 = new DecimalFormat("####.000");
System.out.println(df2.format(1234.56));
参考技术A 1.(double) (Math.round(sd3*10000)/10000.0);
这样为保持4位
(double) (Math.round(sd3*100)/100.0);
这样为保持2位.
2.另一种办法
import java.text.DecimalFormat;
DecimalFormat df2 = new DecimalFormat("###.00");
DecimalFormat df2 = new DecimalFormat("###.000");
System.out.println(df2.format(doube_var));
第一个为2位,第二个为3位. 参考技术B 使用bigdecimal方法计算,这是最精确的 参考技术C float f=11.12356;
java.text.DecimalFormat df = new java.text.DecimalFormat("########.00");
df.format(f);
请问java提供啥方法实现将一个浮点数,四舍五入只保留小数点后两位
第一:从数据库读出时可以进行操作,将读出的数据进行处理后输出,这里可以用数据库提供的方法。这里不多提。第二:也可以用JAVA进行处理,方法很多。
这里说两种吧:
第一
BigDecimal bd = new BigDecima("5.14881");
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP); System.out.println(bd);
第二
static double convert(double value)
long l1 = Math.round(value*100); //四舍五入
double ret = l1/100.0; //注意:使用 100.0 而不是 100
return ret;
public static void main(String[] args)
// BigDecimal bd = new BigDecimal("3.14159265");
// bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
double bd = convert(3.14559);
System.out.println(bd);
参考技术A (float)Math.round(yournum*100)/100;
yournum 就是你给出的浮点数,然后执行这句话就是你要的结果。以后提问题最好给点悬赏分。 参考技术B 需要你进行格式化一下:
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String str= decimal.format(你要格式化的东西);本回答被提问者采纳 参考技术C 比如:
float a = (float)1.123;
DecimalFormat decimal = new DecimalFormat("#.##");
String result = decimal.format(""+a);
这样result就等于1.12了 参考技术D BigDecimal bd = new BigDecimal(0.7553f);
bd = bd.round(new MathContext(2));
System.out.println(bd);
---------------------------------------
注:
java.math.BigDecimal(float value)
java.math.MathContext(int precision)
BigDecimal.round(MathContext): BigDecimal
明白了吧?
另外引申一句:所有的数值处理都在java.math包中,所有的文本格式处理都在java.text包中,如果你希望输入保留两位小数的文本也可以用java.text包中的DecimalFormat类来处理。不过它返回的是字符串。
以上是关于请问:在Java语言中如何把一个浮点数精确到小数点后的某几位?的主要内容,如果未能解决你的问题,请参考以下文章