java double类型
答案:4 悬赏:0 手机版
解决时间 2021-03-19 17:28
- 提问者网友:且恨且铭记
- 2021-03-19 11:42
java double类型
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-03-19 12:23
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);
}
}
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);
}
}
全部回答
- 1楼网友:長槍戰八方
- 2021-03-19 14:34
这样就可以了
///// TEST.java /////////
public class TEST{
public static void main(String args[]){
double d = 1000000000;
System.out.printf("%f", d); //用printf,后面就可以根据你要的格式输出了
}
}
//////////////////////////////
输出:1000000000.000000追问我是要将计算好的值,赋值给对象的属性,不是直接输出,对象的属性是string类型的追答怎么赋值,具体描述下
///// TEST.java /////////
public class TEST{
public static void main(String args[]){
double d = 1000000000;
System.out.printf("%f", d); //用printf,后面就可以根据你要的格式输出了
}
}
//////////////////////////////
输出:1000000000.000000追问我是要将计算好的值,赋值给对象的属性,不是直接输出,对象的属性是string类型的追答怎么赋值,具体描述下
- 2楼网友:傲气稳了全场
- 2021-03-19 14:23
在
输出是格式化就可以了。
输出是格式化就可以了。
- 3楼网友:山有枢
- 2021-03-19 13:45
双精度数据运算问题
这里是一个已经写好的增加对双精度数据加减乘除运算时精度的帖子
里面的方法你直接拿去用就好,利用BigDecimal()转化一下
http://blog.csdn.net/pttaag/article/details/5912171
这里是一个已经写好的增加对双精度数据加减乘除运算时精度的帖子
里面的方法你直接拿去用就好,利用BigDecimal()转化一下
http://blog.csdn.net/pttaag/article/details/5912171
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯