float 値を暗号化する必要があり、これを実現するために Jasypt を使用しています。
私の知る限り、Jasypt は float 暗号化をサポートしておらず、BigDecimal のみをサポートしています。したがって、浮動小数点値を BigDecimal に変換しています。
変換は正常に行われます。また、Jasypt を使用した暗号化と復号化。
ただし、暗号化された値を Oracle DB に永続化すると、DB で値が変更されます。
そのまま保持する必要がある値の例:
-6542850164453273769179743775075308980128742113.12 -4139490689573544701682206282760323584523816140.64 9936653106931456268018508106437020093773774849.6 -69457501008740608752977363196163239676824308939.2 -512974351190591202428175056439128604458367.320048
オラクルで Number データ型を使用しています。
問題は、DB に変更を許可せずに上記の値を保存する方法です。
DB は常に値から ( . ) を削除し、ゼロを追加します。
This value 689612971966376606053641908553771273056281.427984 is saved as: -217333936122185596255723452297898520757000000000000000000000000000000000000000000000000000000000000000000000000000000000000
なぜこれが起こるのですか?