2014-10-11 152 views
1

我有一個介於0和1之間的浮點數,例如0.3420.34等。我需要這樣格式化:.XXX,始終爲三位數精度(尾隨零)並且從不是前導零( 。之前的十進制我有這樣的:?postgreql to_char格式化一個浮點數

CREATE OR REPLACE FUNCTION format_float(real) RETURNS text AS 
$BODY$ 

BEGIN 
return to_char($1, '9.999'); 
END; 

$BODY$ 
LANGUAGE plpgsql VOLATILE COST 100; 

但膠墊前導空格的值我怎樣才能得到這個工作,我試圖在to_char通話'.999'但這也不管用,產生.###

回答

0

簡單地轉換成an arbitrary precision number爲你工作?

SELECT 0.3456::numeric(4,3); 

功能(順便說一句,最好使用SQL功能,優化器可以內聯它們)裏面一樣:

CREATE FUNCTION ff(float) RETURNS numeric(4,3) AS $ff$ 
    SELECT $1::numeric(4,3); 
$ff$ LANGUAGE sql; 
+0

是啊,這就行了。更容易:) – Wells 2014-10-11 19:29:07