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