SmartDBでは、Javaの列挙型RoundingModeを使用して端数処理を行っています。
破棄する小数部の値によって、以下のように動作が異なります。
- ①破棄する小数部が5より小さい(<5)場合は切り捨て
- ②破棄する小数部が5より大きい(>5)場合は繰り上げ
- ③破棄する小数部が5(=5)の場合
- 1) 破棄する小数部の後ろに、1以上の位がある場合は繰り上げ
-
2) 破棄する小数部の後ろに、他の位がない または 0の場合は、破棄する小数部の左側の値で動作が異なり、破棄する小数部の左側の値が偶数の場合は切り捨て、奇数の場合は繰り上げ
※破棄する小数部とは、表示フォーマットより多い桁数のことです。
以下パターン1の入力値を例で挙げますと、「12345.658」の小数点第三位「8」が破棄する小数部となります。
例
表示フォーマット「###,###.00」を指定した場合
入力値 | 動作 | 破棄する小数部の左側の桁 | 出力結果 | |
---|---|---|---|---|
パターン1 | 12345.658 | 上記②の動作に該当 | - | 12,345.66 |
パターン2 | 12345.684 | 上記①の動作に該当 | - | 12,345.68 |
パターン3 | 12345.685 | 上記③-2)の動作に該当 | 8(偶数のため五捨六入) | 12,345.68 |
パターン4 | 12345.6650 | 上記③-2)の動作に該当 | 6(偶数のため五捨六入) | 12,345.66 |
パターン5 | 12345.675 | 上記③-2)の動作に該当 | 7(奇数のため四捨五入) | 12,345.68 |
パターン6 | 12345.6651 | 上記③-1)の動作に該当 | - | 12,345.67 |