sql >> データベース >  >> RDS >> Mysql

mysqlからjavaに返された誤ったdouble値

    この動作は、浮動小数点数で予想されます。 IEEE754がどのように機能するかを読むことができます https://en.wikipedia.org/wiki/IEEE_754 。

    しかし、別の問題が起こっていると思います。数値が倍精度(64ビット)であると言いますが、結果に基づいて、float(32ビット)に変換されているように見えます

    -42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)
    
    -42295.84518699004 -> 0xC0E4A6FB0BC59627 (64bit)- 0xC72537D8 (32bit)
    

    精度を正しく保ちたい場合は、DBとJavaの両方で正しく定義する必要があります。https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html



    1. Microsoft SQL Server、Oracle、MySQL、およびDB2のC#データベース抽象化

    2. SQLServerのFloatとNumeric/Decimalの違いは何ですか-SQLServer/T-SQLチュートリアルパート33

    3. Oracle SQL:グループからレコードだけを見つける方法

    4. mysqlは2列でクエリの順序を結合します