1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
menangani kasus pertama - atas izin jawaban untuk pertanyaan serupa di Forum SQL Server
, yang saya adaptasi dan periksa dengan cepat.
Perhatikan bahwa jika angka yang Anda bulatkan ke 0.5
terdekat bisa lebih besar (mis. 333.69
=> 333.5
), pastikan untuk menentukan lebih banyak decimal
presisi saat Anda melakukan cast (mis. select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
), atau Anda bisa mendapatkan kesalahan overflow:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Presisi ekstra tidak akan mempengaruhi hasil garis bawah (yaitu select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
dan select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
keduanya menghasilkan 3.5
); tapi pemborosan jika angka yang dibulatkan selalu lebih kecil.
Referensi online dengan contoh tersedia untuk T-SQL FLOOR
, CAST
, dan decimal
untuk membantu.
2) select ROUND(142600, -3)
menangani kasus kedua.
Referensi online serupa tersedia untuk T-SQL ROUND
.