我正在努力将浮点数格式化为具有条件格式的字符串。
Input : Float Number 00000.NN
Output : string 00000.NN
条件:
如果变量 decimalplace = 2,则将数字原样转换为字符串,最多保留 2 位小数,不四舍五入
如果变量 decimalplace = 0,则将数字按原样转换为最多 2 位小数的字符串。只需用 .00
修剪小数部分例子:
if decimal place = 2
then 123456 will 123456.00
then 123456.00 will 123456.00
then 123456.12 will 123456.12
if decimal place = 0
then 123456 will 123456.00
then 123456.00 will 123456.00
then 123456.12 will 123456.00
ROUND()
和FORMAT()
的组合是一个可能的解决方案:
DECLARE @place int = 2;
SELECT
[Number],
FORMAT(ROUND([Number], @place), '#.00') AS [FormatedNumber]
FROM (VALUES
(123456),
(123456.00),
(123456.12),
(123456.1245)
) v ([Number])
以下是否提供了您的预期结果?
declare @DecimalPlace tinyint = 0, @num Float = 123456.12;
select Concat(Format(@num, '#.' + Replicate('0',@DecimalPlace)), Iif(@DecimalPlace = 0, '.00',''));