我想比较两个金额。我的问题是,另一个数量是小数,而另一个是Double,我使用方法'CompareTo()'来比较金额,它不允许双倍。我不想更改Double金额,因为它可能在不同的地方使用,它可能会打破其他人的代码。有没有办法可以将Double金额转换为Decimal?
请帮忙
Double maxSumInsured;
ProfidaDecimal totalClaimCost;
if(totalClaimCost.compareTo(maxSumInsured) > 0){
//some code here
}
答案 0 :(得分:1)
如果您正在处理主要类型,则不需要使用任何比较方法来测试它们是否相等。只需将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
This SO answer总结了你需要了解的关于施法/拳击的一切。
编辑:根据OP评论,这应该有效:
Double maxSumInsured;
maxSumInsured = 0.0; // or anything storable as a double
if(((Double)totalClaimCost).compareTo(maxSumInsured) > 0){
// ...
}
答案 1 :(得分:1)
对于转换,您可以使用BigDecimal.valueOf(arg0)
并将此值作为参数传递给'CompareTo'方法
答案 2 :(得分:1)
尝试以下:
Double d = 5.25;
Integer i = d.intValue(); // i becomes 5