英文:
Why should I compare the balance with BigDecimal.ONE before a transaction in Java?
问题
我正在查看有关从一个账户向另一个账户进行财务交易的教程,在将金额从一个账户转移到另一个账户之前,他们进行了这两个比较:
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
&& fromAccount.getCurrentBalance().compareTo(amount) == 1
我理解他们进行第二次比较是为了将余额与金额进行比较,但我不理解为什么他们要将余额与BigDecimal.ONE进行比较。有人可以解释一下吗?
我不明白这个比较是用来做什么的:
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE)
这是代码:
if(fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
&& fromAccount.getCurrentBalance().compareTo(amount) == 1
){
fromAccount.setCurrentBalance(fromAccount.getCurrentBalance().subtract(amount));
accountRepository.save(fromAccount);
toAccount.setCurrentBalance(toAccount.getCurrentBalance().add(amount));
accountRepository.save(toAccount);
Transaction transaction = transactionRepository.save(new Transaction(0L, fromAccountNumber, amount, new Timestamp(System.currentTimeMillis())));
return transaction;
}
return null;
英文:
I'm looking at a tutorial about a financial transaction from an account to another and before transfering the amount from an account to another they do these 2 comparations:
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
&& fromAccount.getCurrentBalance().compareTo(amount) == 1
I understand that they do the second comparation to compare the balance with the amount, but what I don't understand is why they compare the balance with BigDecimal.ONE. Can somebody explain?
I don't understand for what is this comparation:
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE)
This is the code:
if(fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
&& fromAccount.getCurrentBalance().compareTo(amount) == 1
){
fromAccount.setCurrentBalance(fromAccount.getCurrentBalance().subtract(amount));
accountRepository.save(fromAccount);
toAccount.setCurrentBalance(toAccount.getCurrentBalance().add(amount));
accountRepository.save(toAccount);
Transaction transaction = transactionRepository.save(new Transaction(0L,fromAccountNumber,amount,new Timestamp(System.currentTimeMillis())));
return transaction;
}
return null;
答案1
得分: 1
这只是一个在Java中用于比较大于的BigDecimal
条件签名。如果您的CurrentBalance
变量数据类型为BigDecimal
,那么您不能使用普通的整数条件签名,如==
、>
或<
。BigDecimal
的compareTo()
方法返回值以确定等于
、大于
和小于
操作。
BigDecimal的CompareTo()方法返回:
0:如果此BigDecimal的值等于作为参数传递的BigDecimal对象的值。
1:如果此BigDecimal的值大于作为参数传递的BigDecimal对象的值。
-1:如果此BigDecimal的值小于作为参数传递的BigDecimal对象的值。
如果我们考虑这一行:
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
这一行在整数数据类型中可以简单地表示为:
if(fromAccount.getCurrentBalance() > 1)
如果我将您的两个条件转换为普通的整数数据类型操作,那么它会变成这样:
if(fromAccount.getCurrentBalance() > 1 && fromAccount.getCurrentBalance() > amount)
访问此处了解BigDecimal
的compareTo()
操作。链接
英文:
This is just a BigDecimal
greater than conditional signature in java. if your CurrentBalance
variable datatype is BigDecimal
then you can't use the normal integer conditional signature like ==
or >
or <
. BigDecimal
compareTo()
method returns values to determine the equal
, greater than
and less than
operations.
Big Decimal CompareTo() method returns
0 : if value of this BigDecimal is equal to that of BigDecimal object passed as parameter.
1 : if value of this BigDecimal is greater than that of BigDecimal object passed as parameter.
-1 : if value of this BigDecimal is less than that of BigDecimal object passed as parameter.
If we consider this line
fromAccount.getCurrentBalance().compareTo(BigDecimal.ONE) == 1
this line can simply means in an integer datatype
if(fromAccount.getCurrentBalance() > 1)
If I convert both of your conditions in a normal integer datatype operation then it will looks like this.
if(fromAccount.getCurrentBalance() > 1 && fromAccount.getCurrentBalance() > amount)
visit here to understand BigDecimal
compareTo()
operation.<br/>
https://www.geeksforgeeks.org/bigdecimal-compareto-function-in-java/
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论