如何在 Java Card 中使用浮点数?

Jin*_*nju 1 javacard

我需要你的帮助:有人知道如何在 Java Card 中呈现浮动吗?

我需要的浮点数是0.9. 我听说我需要使用浮点或类似的东西,但我不太确定。

Maa*_*wes 5

就像大多数 Java Card 实现不具有 32 位整数一样,它们也不包含浮点运算。然而,这甚至更深入:甚至不支持浮点的编译字节码。因此,最终您必须自己完成此操作或寻求供应商支持。请注意,大多数智能卡 CPU 内核也不会执行浮点运算,因此必须使用整数运算来模拟它。

如果您需要对实数进行算术以进行货币计算或类似的操作,那么您最好研究一下定点算术。一个技巧是简单地执行每个值乘以 100 的计算,即使用分进行计算。那么 0.90 乘以 10 将变成 90 乘以 10。然后 - 在终端 - 您只需重新插入逗号即可。

如果您想做整数计算(可选但通常不支持),请在此处查看我的圣诞节特别答案...可能是代码方面最复杂答案的竞争者。这样您就可以进行 32 位计算,您可能需要处理任何类型的精度(大约 9 位十进制数字,而不是使用 Shorts 得到的大约 4 位)。


如果您只需要存储浮点数,则只需将浮点编码为字节,例如使用DataOutputStream并存储结果字节。或者对打包的 BCD 进行编码并使用一个字节来表示逗号所在的位置。