如何在Java中将双精度转换为十进制

如何在Java中将双精度转换为十进制,java,Java,我试着比较两个数量。我的问题是,另一个金额是十进制的,而另一个是双精度的,我使用“CompareTo()”方法来比较金额,它不允许双精度。我不想更改双倍金额,因为它在不同的地方使用,可能会破坏其他人的代码。有没有办法把双倍的数字转换成十进制 请帮忙 Double maxSumInsured; ProfidaDecimal totalClaimCost; if(totalClaimCost.compareTo(maxSumInsured) > 0){ //some

我试着比较两个数量。我的问题是,另一个金额是十进制的,而另一个是双精度的,我使用“CompareTo()”方法来比较金额,它不允许双精度。我不想更改双倍金额,因为它在不同的地方使用,可能会破坏其他人的代码。有没有办法把双倍的数字转换成十进制

请帮忙

  Double maxSumInsured;
   ProfidaDecimal  totalClaimCost;

   if(totalClaimCost.compareTo(maxSumInsured) > 0){
    //some code here
   }

如果您处理的是主类型,则不需要使用任何比较方法来测试它们是否相等。只需将您的
int
转换为
double

(double)yourDecimal == yourDouble
如果它们是装箱类型(即
Integer
Double
而不是
int
Double
),您仍然可以使用
Equals

((Double)yourDecimal).Equals(yourDouble)
或者,如果要使用
compareTo
查看哪个更大:

((Double)yourDecimal).compareTo(yourDouble) >0 
// or <0 or ==0 depending on what you're looking for

要进行转换,可以使用
BigDecimal.valueOf(arg0)
并将此值作为参数传递给'CompareTo'方法

尝试以下操作:

Double d = 5.25;
Integer i = d.intValue(); // i becomes 5

是的,您可以将其转换为十进制(整数,BigInt),但会丢失精度。在Double上尝试Integer对象的valueOf()方法并签出结果。使用沙箱项目观察转换的行为:);做你自己的研究-你会学到有价值的东西你这里的“小数点”到底是什么意思?如果您能展示一些示例代码,这将非常有帮助……Double MaxSum;利润具体总索赔成本;totalClaimCost.compareTo(MaxSumInsurated)>0您首先不应该持有双倍保险。这才是真正的问题。您必须始终使用十进制货币类型。
Double d = 5.25;
Integer i = d.intValue(); // i becomes 5