MySQLの丸めの動作条件はhere.です。 Approximate(FLOAT、DOUBLE)値の丸めがHALF_EVENになると約束します。しかし、同じことをしようとすると、私はその文書で述べられたことを生み出すことができませんでした。 DOUBLEデータ型のHALF_UPとして明確に機能します。私はここに何もないのですか?あなたがあなたのリクエストをリンクされるドキュメントからMySQLの丸め動作が意図したとおりに動作しません..?
CREATE TABLE `doubleValues` (
`val` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
select* from doubleValues;
+-------+
| val |
+-------+
| 1.245 |
| 0.555 |
+-------+
select round(val,2) from doubleValues;
+--------------+
| round(val,2) |
+--------------+
| 1.25 |
| 0.56 |
+--------------+
2 rows in set (0.00 sec)
あなたはおおよその数値ではなく、おおよその数値を使用していませんでした。また、[documentation](https://dev.mysql.com/doc/refman/5.7/en/precision-math-rounding.html)によれば、ラウンドハーフアップは基本となるCライブラリに依存することがあります。常に起こるとは限りません。 –
@TimBiegeleisen "val"カラムにdoubleデータ型を使用しました。そして、MySQLのFLOATとDOUBLEによれば、数値データ型に近いものです。 ref:https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html –
あなたは、以下のThorstenの答えをチェックして、二重について正しいです。丸め動作は定義されていません。 –