簡體   English   中英

如何使用 bigquery 將結果四舍五入到小數點后 4 位?

[英]How to use bigquery round up results to 4 digits after decimal point?

BigQuery 現在沒有十進制數據類型。 所以我必須使用浮動

在 Bigquery 浮點除法中

0.029*50/100=0.014500000000000002

雖然

0.021*50/100=0.0105

向上舍入值

我必須使用round(floatvalue * 10000)/ 10000。

這是現在在 BigQuery 中處理十進制數據類型的正確方法嗎?

取決於您的編碼偏好 - 例如,您可以使用簡單的ROUND(floatvalue, 4)
取決於您究竟需要如何舍入 - 向上或向下 - 您可以分別調整表達式
例如ROUND(floatvalue + 0.00005, 4)

在下面的鏈接中查看 BigQuery Standard SQL 的所有舍入函數

https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#rounding-functions

請注意,這個問題現在應該有不同的答案。

問題的前提是“我們現在在 BigQuery 中沒有十進制數據類型。”

但現在我們這樣做:您可以使用NUMERIC

SELECT CAST('0.029' AS NUMERIC)*50/100

# 0.0145

只要讓你的列是NUMERIC而不是FLOAT64 ,你就會得到想要的結果。

在大多數 SQL 方言中四舍五入不是內置的 function,除非您有幸四舍五入到 Z157DB7ZDF530023575515D366C9B672E8。 在這種情況下, CEIL是一種快速可靠的解決方案。

在四舍五入的情況下,我們也可以利用 CEIL,盡管需要幾個額外的步驟。

步驟:

  1. 乘以您的值,將最后一位小數移動到十分位 position。 前任。 18.234 乘以 100 變為 1823.4。 ( n * 100)
  2. 使用 CEIL() 向上舍入到最接近的 integer。 在我們的示例中,CEIL( n ) = 1824。
  3. 將此結果除以步驟 1 中使用的相同數字。在我們的示例中, n / 100 = 18.24。

簡化這些步驟給我們留下了以下邏輯:

SELECT CEIL(value * 100) / 100 as rounded_up;

使用FLOOR function 可以使用相同的邏輯向下舍入:

FLOOR(value * 100) / 100 AS rounded_down;

感謝@Mureinik 的回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM