我有一个介于0和1之间的浮点数,例如0.342
或0.34
等。我需要这样格式化:.XXX
,总是三位数精度(尾随零)并且从不是前导零(小数点之前。我有这个:
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;
但它用前导空格填充值。我怎样才能使这个工作?我在'.999'
电话中尝试to_char
,但这也无效,产生.###
答案 0 :(得分: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;