2014-10-11 71 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