我在 MySQL 查詢中使用 Round() 函式來獲取精度為 3 的 SUM() 值。但我不確定這是最好的方法還是獲得實際值并在 java 或 js 中將其四舍五入。我對哪種是最佳實踐以及為什么會感到有些困惑?
Select ROUND(SUM(ORDER_VALUE),3) from Orders
或者
Select SUM(ORDER_VALUE) from Orders group by STOCK_ID:
after that
DecimalFormat formatter = new DecimalFormat("0.000");
System.out.println(formatter.format(25.0));
uj5u.com熱心網友回復:
您想知道在 MySQL 內或在您的應用程式中將四舍五入到三位十進制數字是否更好。
只要 SQL 陳述句包含SUM(ORDER_VALUE),就沒有關系,至少就準確性而言。在四舍五入之前,該SUM()操作使用它所操作的列的精度。
而且,您的選擇之間的性能差異太小而無法衡量。遠不到一微秒。
因此,最重要的是讓您的代碼盡可能清晰、易于推理。你在處理別人的錢,你希望能夠說服自己你做得對。
當一位成熟的客戶詢問精度的第四和第五位發生了什么時,您希望給出一個簡短而正確的答案。
對您和一年后的未來自己以及您的同事來說,閱讀 SQL 中的 ROUND 或 Java 中的字串格式內容是否更容易?
我傾向于將業務規則放在代碼中的一處。SQLSUM是一個業務規則。所以ROUND應該去。
uj5u.com熱心網友回復:
SELECT SUM(ROUND(ORDER_VALUE,3)) FROM Orders
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389794.html
