就像大多数 Java Card 实现不具有 32 位整数一样,它们也不包含浮点运算。然而,这甚至更深入:甚至不支持浮点的编译字节码。因此,最终您必须自己完成此操作或寻求供应商支持。请注意,大多数智能卡 CPU 内核也不会执行浮点运算,因此必须使用整数运算来模拟它。
如果您需要对实数进行算术以进行货币计算或类似的操作,那么您最好研究一下定点算术。一个技巧是简单地执行每个值乘以 100 的计算,即使用分进行计算。那么 0.90 乘以 10 将变成 90 乘以 10。然后 - 在终端 - 您只需重新插入逗号即可。
如果您想做整数计算(可选但通常不支持),请在此处查看我的圣诞节特别答案...可能是代码方面最复杂答案的竞争者。这样您就可以进行 32 位计算,您可能需要处理任何类型的精度(大约 9 位十进制数字,而不是使用 Shorts 得到的大约 4 位)。
如果您只需要存储浮点数,则只需将浮点编码为字节,例如使用DataOutputStream
并存储结果字节。或者对打包的 BCD 进行编码并使用一个字节来表示逗号所在的位置。
归档时间: |
|
查看次数: |
238 次 |
最近记录: |