首页 > 解决方案 > Corda 中的金额实例

问题描述

我正在尝试在 Corda 中创建“金额”的实例。我将一个 long 值和一个 USD 实例传递给它。

val amount = Amount(value, Currency.getInstance("USD"))

其中值为 10。

我希望输出为 10 美元,但它被返回为 0.10 美元,这是预期的。

我也知道美元在小数点右边有两位数。
但是有没有办法达到我想要的解决方案?

注意:我期望的类型是 Amount<Currency>。

标签: javakotlincorda

解决方案


Amount<Currency> a = new Amount<>(10, new BigDecimal("1"), Currency.getInstance("USD"));

金额(数量:Long,displayTokenSize:BigDecimal,token:T)

金额表示某种代币(货币、资产等)的正数,以最小可表示单位的数量来衡量。每个单独令牌所代表的名义数量等于 displayTokenSize。displayTokenSize 的 scale 属性应正确反映显示的小数位,并在通过 Amount.fromDecimal 方法将 BigDecimal 中的指示性/显示金额四舍五入转换为 Amount 时使用。

或者

Amount.fromDecimal( new BigDecimal("10"), Currency.getInstance("USD"))

fun fromDecimal(displayQuantity:BigDecimal,令牌:T,舍入:RoundingMode = RoundingMode.FLOOR):

金额 从十进制表示中构建金额。例如,输入“12.34 GBP”,返回一个数量为“1234”代币的金额。函数 getDisplayTokenSize 用于确定转换比例,例如债券的名义金额可能为 100,货币单位为 0.01 美分。

https://api-prod.corda.net/api/corda-os/4.8/html/api/kotlin/corda/net.corda.core.contracts/-amount/


推荐阅读