-4

我正在尝试比较两个金额。我的问题是另一个金额是小数,而另一个是双精度数,我使用“CompareTo()”方法比较金额,它不允许双精度数。我不想更改 Double 金额,因为它可能在不同的地方使用,它可能会破坏其他人的代码。有没有办法可以将 Double 金额转换为 Decimal?

请帮忙

  Double maxSumInsured;
   ProfidaDecimal  totalClaimCost;

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

3 回答 3

1

如果您正在处理主要类型,则不需要使用任何比较方法来测试它们是否相等。只需将您投射intdouble

(double)yourDecimal == yourDouble

如果它们是拳击类型(即IntegerandDouble而不是intand double),您仍然可以使用Equals

((Double)yourDecimal).Equals(yourDouble)

或者,如果您想使用compareTo以查看哪个更大:

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

这个 SO 答案总结了您需要了解的有关铸造/拳击的所有信息。

编辑:根据 OP 评论,这应该有效:

Double maxSumInsured;
maxSumInsured = 0.0; // or anything storable as a double
if(((Double)totalClaimCost).compareTo(maxSumInsured) > 0){
   // ...
}
于 2013-06-05T11:53:08.780 回答
1

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

于 2013-06-05T11:54:28.773 回答
1

尝试以下:

Double d = 5.25;
Integer i = d.intValue(); // i becomes 5
于 2013-06-05T11:59:10.200 回答