用double计算也只能精确到小数点后16位。我要提高精确度,比如说小数点后32位。怎么办?我用BigDecimal解决精度缺失问题。这也要考虑在内。DecimalFormat似乎不行。只是在16位后加几个0罢了。最终要得到的效果就像:1 / 3 = 0.33333333333333333333333333333333 (32个3)
解决方案 »
- socket编程使用BufferedReader的readLine方法问题
- 字符串匹配问题
- Java文件名字中的$符号表示什么?例如文件名称SecurityFilter$RequestSet.class怎么找不到他的源文件啊?
- 包org.apache.bcel.util.BCELifier和com.sun.org.apache.bcel.internal.util.BCELifier
- 有会的朋友指导下吗 刚学JAVA 拜托了
- 求助:在GUI设计方面能不能模拟方向键,如手机的方向键
- 如何从MySql数据库longblob型的数据?
- 急需帮助
- 请问线程的sleep()一般设置为休眠多少比较好呢
- 异步的问题.讨论一下.
- java 中的事件类
- 怎么写一个消息发布的接口?!急!急!
其实它有那么智能的
import java.util.*;public class DecimalFormatSample {
public static void main(String args[]) {
DecimalFormat myformat1 = new DecimalFormat("###,###.0000");//使用系统默认的格式
System.out.println(myformat1.format(111111123456.12)); Locale.setDefault(Locale.US);
DecimalFormat myformat2 = new DecimalFormat("###,###.0000");//使用美国的格式
System.out.println(myformat2.format(111111123456.12)); //----------------------------also use applypattern------------------------------// DecimalFormat myformat3 = new DecimalFormat();
myformat3.applyPattern("##,###.000");
System.out.println(myformat3.format(11112345.12345));
//-----------------控制指数输出-------------------------------------------------// DecimalFormat myformat4 = new DecimalFormat();
myformat4.applyPattern("0.000E0000");
System.out.println(myformat4.format(10000));
System.out.println(myformat4.format(12345678.345));
//------------------百分数的输出-------------------------------------------//
/* DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,
然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转
换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。 */
DecimalFormat myformat5 = null;
try{
myformat5 = (DecimalFormat)NumberFormat.getPercentInstance();
}catch(ClassCastException e)
{
System.err.println(e);
}
myformat5.applyPattern("00.0000%");
System.out.println(myformat5.format(0.34567));
System.out.println(myformat5.format(1.34567));
}/*---------------------------------运行结果-------------------------------------------//
F:\2004-04-12>java DecimalFormatSample
111,111,123,456.1200
111,111,123,456.1200
11,112,345.123
1.000E0004
1.235E0007
34.5670%
134.5670%*/}
System.out.println(bd.toString());
System.out.println(bd.toString().length());
}
System.out.println(bd.toString());
System.out.println("小数位数:" + (bd.toString().length() - 2));
}
最终要得到的效果就像:1 / 3 = 0.33333333333333333333333333333333 (32个3)
参考代码如下:import java.math.*;
public class BigDecimalNumber {
public static void main(String[] args) {
BigDecimal b1=new BigDecimal("1",MathContext.DECIMAL128);
BigDecimal b2=new BigDecimal("3",MathContext.DECIMAL128);
BigDecimal result = b1.divide(b2,MathContext.DECIMAL128);// 1/3
System.out.println(result);
}
}
运行结果:0.3333333333333333333333333333333333