永发信息网

java double类型

答案:4  悬赏:0  手机版
解决时间 2021-03-19 17:28
java double类型
最佳答案
double类型直接进行运算会出现精度问题,可先转换为字符串之后再进行运算。
import java.math.BigDecimal;
public class Arith {
// 默认除法运算精度
private static final int DEF_DIV_SCALE = 10;

// 这个类不能实例化
private Arith() {
}
public static double add(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.add(b2).doubleValue();
}

public static double sub(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.subtract(b2).doubleValue();
}
public static double mul(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.multiply(b2).doubleValue();
}
public static double div(double v1, double v2) {
return
div(v1, v2, DEF_DIV_SCALE);
}
public static double div(double v1, double v2, int scale)
{
if (scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return b1.divide(b2, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v, int scale) {
if
(scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b = new
BigDecimal(Double.toString(v));
BigDecimal one = new
BigDecimal("1");
return b.divide(one, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class test {
public static void main(String[] args)
{
double d1=0.2;
double d2=0.1;
double
d3=d1+d2;
System.out.println(Arith.add(d1,
d2));
System.out.println(Arith.sub(d1,
d2));
System.out.println(d3);
}
}
全部回答
这样就可以了
///// TEST.java /////////
public class TEST{
public static void main(String args[]){
double d = 1000000000;
System.out.printf("%f", d); //用printf,后面就可以根据你要的格式输出了
}
}
//////////////////////////////
输出:1000000000.000000追问我是要将计算好的值,赋值给对象的属性,不是直接输出,对象的属性是string类型的追答怎么赋值,具体描述下

输出是格式化就可以了。
双精度数据运算问题
这里是一个已经写好的增加对双精度数据加减乘除运算时精度的帖子
里面的方法你直接拿去用就好,利用BigDecimal()转化一下
http://blog.csdn.net/pttaag/article/details/5912171
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
win7+32位电脑可以装哪些牛逼的软件?
车子30000公里了,可以换刹车油吗,大概需要
鑫苑金融广场-银座(西门)怎么去啊,有知道地
我国实行公有制为主体、多种所有制经济共同发
求陆游的《村居书喜》的翻译
二开关单控接线视频教程
魅族CEO 黄章是一个怎样的人
MAM-880螺杆式空压机出现这个问题怎么解决,
古地名 甀是什么地方
大家有没有好玩的手机游戏?(小一点的)
带有依字梦字静的诗
河南省农村信用合作联社孙庄分社在什么地方啊
墙什么材料隔音效果好
中国邮政(开发区支局)(高新区新盛路36号中国
vivox6puls和oppor7s哪个更好
推荐资讯
稳恒磁场的高斯定理和环路定理是什么?它们反
荷叶与红莲这篇阅读短文的答案
品膳房高境店地址在哪,我要去那里办事
你好台式电脑左下角是个苹果这是什么系统
东坞口地址有知道的么?有点事想过去
雍正全部的诗
上海13线地铁早班几点开
红色锆石是红宝石吗
苹果电脑进不了桌面
谁能用PS帮我合张照片~谢谢有分~~
结束降水机械通风的条件干燥前沿是什么意思
榆次泰亨华庭群号是多少?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?