Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带两个十进制数的Java双精度_Java_Double_Decimal - Fatal编程技术网

带两个十进制数的Java双精度

带两个十进制数的Java双精度,java,double,decimal,Java,Double,Decimal,比如说,我有以下代码: DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); df.setMinimumFractionDigits(2); df.format(125,436573); 现在返回一个字符串 既然您无法将字符串转换为双精度(使用cast),那么如何获得类型双精度 据我所知,这只会删除两位数之后的所有内容,而不是实际的四舍五入 我一直在寻找Java.lan

比如说,我有以下代码:

    DecimalFormat df = new DecimalFormat();
    df.setMaximumFractionDigits(2);
    df.setMinimumFractionDigits(2);
    df.format(125,436573);  
现在返回一个字符串

既然您无法将
字符串
转换为
双精度
(使用cast),那么如何获得类型
双精度

据我所知,这只会删除两位数之后的所有内容,而不是实际的四舍五入

我一直在寻找
Java.lang.math
对象,但似乎找不到解决方案


对于记录,我需要它将双精度插入数据库表。

这是我用来舍入到小数点后两位的方法

public static double round2(double d) {
    final double factor = 1e2;
    return d > Long.MAX_VALUE / factor || d < -Long.MAX_VALUE / factor ?
            (long) (d < 0 ? d * factor - 0.5 : d * factor + 0.5) / factor : d;
}
公共静态双循环2(双d){
最终双因子=1e2;
返回d>Long.MAX_值/因子| d<-Long.MAX_值/因子?
(长)(d<0?d*因子-0.5:d*因子+0.5)/因子:d;
}

您不需要生成一个字符串,就可以再次解析它。

这就是我用来舍入到小数点后两位的方法

public static double round2(double d) {
    final double factor = 1e2;
    return d > Long.MAX_VALUE / factor || d < -Long.MAX_VALUE / factor ?
            (long) (d < 0 ? d * factor - 0.5 : d * factor + 0.5) / factor : d;
}
公共静态双循环2(双d){
最终双因子=1e2;
返回d>Long.MAX_值/因子| d<-Long.MAX_值/因子?
(长)(d<0?d*因子-0.5:d*因子+0.5)/因子:d;
}

你不需要生成一个字符串就可以再次解析它。

这是一个例子,我不确定你问的问题是你真正想提出的问题。似乎您想要有正好两位小数的小数,但这不仅仅是最终输出格式的问题,而是持久性的问题

您不希望使用双倍的
来执行此操作。您将得到舍入错误,因为小数不能准确地以二进制表示法存储。出于同样的原因,您不想在数据库中存储双倍的资金。(,)


正如您在那里的链接中所看到的,您希望在数据库中使用带有隐含小数点、BigDecimal或数字字段的整数组合。

这是一个我不确定您所问的问题是否是您真正想要提出的问题的示例。似乎您想要有正好两位小数的小数,但这不仅仅是最终输出格式的问题,而是持久性的问题

您不希望使用双倍的
来执行此操作。您将得到舍入错误,因为小数不能准确地以二进制表示法存储。出于同样的原因,您不想在数据库中存储双倍的资金。(,)


正如您在那里的链接中所看到的,您希望在数据库中使用带有隐含小数点、大十进制或数字字段的整数组合。

您可以使用commons-math3
Precision.round(双x,int scale)
您可以使用commons-math3
Precision.round(双x,int scale)
df.format(125436573);//在java.text.DecimalFormatdf.format(125436573)中没有任何包含2个参数的format方法;//在java.text.DecimalFormatUpDeved中没有任何格式方法有2个参数,因为答案优雅、正确,但主要是因为这是我在返回语句中看到的最长的三元运算。@publ1c_stat1c lol它很难看,但你可以确切地看到它的作用。Up-DecimalFormatUpDeved是因为答案优雅、正确,但主要是因为这是我在这是我在return语句中看到的最长的三元运算。@publ1c_stat1c lol它非常难看,但是你可以确切地看到它的作用。