public class Round {
private static double ROUND_FACTOR = 0.000000000001;
public static double round(double val,int length){
double duke = 1;
for(int i=0;i<length;i++){
duke = duke*10;
}
return Math.round(val*duke + ROUND_FACTOR)/duke;
}
}这是一个精确的算法。因为直接用Math.round()会出问题。
private static double ROUND_FACTOR = 0.000000000001;
public static double round(double val,int length){
double duke = 1;
for(int i=0;i<length;i++){
duke = duke*10;
}
return Math.round(val*duke + ROUND_FACTOR)/duke;
}
}这是一个精确的算法。因为直接用Math.round()会出问题。
解决方案 »
- 通过反射修改final实例变量,求一合理解释
- 请问:怎么进行对数组元素的删除??不涉及集合内容(希望能用代码解释一下),谢谢!
- java 枚举问题,values
- Java文件编码
- JMenu快捷键部分不起作用
- 【散分】周末,祝大家开心:)
- 做一个真正的非方形BUTTON,用UI行不行,还是从AbstractButton继承,或者更低层的类继承?
- 再oracle里面如何把blob字段清空
- 初学java可以用哪种工具好?visual age for java 怎么样?
- 隐式参数this和super是如何实现的
- 在WEB开发中war文件具体是包含什么?他是怎么生成的?(如:jar文件是用jar生成的)主要用在什么地方?主要作用是什么?
- 新手上路,第一次使用JBuilder,有点麻烦,各位帮帮忙!
private static double ROUND_FACTOR = 0.000000000001;
public static double round(double val,int length){
double duke = 1;
for(int i=0;i<length;i++){
duke = duke*10;
}
return Math.round(val*duke + ROUND_FACTOR)/duke;
}
}这是一个精确的算法。因为直接用Math.round()会出问题。
DecimalFormat df = new DecimalFormat( "#*.##" );
String s = df.format( result.getDouble() );
不过JDBC中对SQL DECIMAL数据类型对应的Java类型是BigDecimal,不是double。