删除前导零和尾随零并将结果保留到小数点后两位

     2023-04-14     56

关键词:

【中文标题】删除前导零和尾随零并将结果保留到小数点后两位【英文标题】:Removing leading and trailing zeros and have the result in two decimal places 【发布时间】:2020-01-27 19:23:37 【问题描述】:

我想删除前导零和尾随零,并希望将结果保留到小数点后两位。例如:如果数字是0.01,我想看0.01;如果数字是 0.010,我想看 .01;如果数字是 0.10,我想看到 .10;如果数字是 1,我想看到 1.00。

我会使用FORMAT 函数。 例如:

SELECT FORMAT (0.090, '#.######') 

工作正常,它显示 .09

但是,当我对大于 1 的值使用相同的语句时,它不会显示小数位。

例如:

SELECT FORMAT (10, '#.######') 

在我期待 10.00 时给出 10

我试图使用CASE 语句来解决这个问题,但徒劳无功。 case 语句适用于大于 1 的值,但它不会删除前导零。

DECLARE @a float = 10
SELECT
CASE 
    WHEN @a <1 THEN  format (@a, '#.######') 
    ELSE CAST(FORMAT(@a, '#.######') AS money) 
END 

按照我的预期给出 10.00。但是,例如,当 @a 的值为 0.090 时,它给出 0.09 而我期望 .09

有什么方法可以删除尾随零和前导零并将结果保留到小数点后两位?非常感谢任何指南。

【问题讨论】:

格式化是 display 层的职责。我的建议是在 SQL 中返回原始数据并配置显示(表单、网页、报告等)以显示您想要的数字。 【参考方案1】:

虽然我同意 D Stanley 的观点,即“格式化是显示层的责任”,但我知道有时您需要在存储过程或其他函数中使用一些脏函数。试试这个:

CREATE FUNCTION dbo.toStr(@a float)  
RETURNS varchar(12)
AS 
BEGIN  
  DECLARE @ret varchar(12)
  SELECT @ret =
   CASE 
    WHEN @a < 1 THEN replace(format(@a, '.##'), '0.','.')
    ELSE FORMAT(@a, '#.00')
   END 
  RETURN @ret 
END;

我已使用以下值进行了测试:

select dbo.toStr(0.090);  -- .09
select dbo.toStr(1.09);   -- 1.09
select dbo.toStr(10.00);  -- 10.00
select dbo.toStr(1.2);    -- 1.20

【讨论】:

谢谢。我将 .## 稍微修改为 .######,因为它会减少更大的数字。

如何检查一个数字是不是有两位小数并在必要时保留尾随零?

】如何检查一个数字是不是有两位小数并在必要时保留尾随零?【英文标题】:Howtocheckifanumberhastwodecimalplacesandkeepthetrailingzeroifnecessary?如何检查一个数字是否有两位小数并在必要时保留尾随零?【发布时间】:2013-10-0423:54:58【问... 查看详情

XSLT 1.0 删除前导零并将小数点添加到值

】XSLT1.0删除前导零并将小数点添加到值【英文标题】:XSLT1.0Removeleadingzerosandadddecimalpointtoavalue【发布时间】:2018-11-0518:34:40【问题描述】:我正在使用XSLT1.0并尝试删除所有前导零并在最后2个数字之前添加一个小数点。字符数始... 查看详情

我如何修复此代码以使其修剪尾随零和小数点(代码片段)

我需要修剪尾随的0和小数点,我尝试了以下代码,它将无法正常工作。我正在使用PostgreSQL,最终结果看起来像(从显示1234.00到“1234英尺”)SELECTTRIM(TRAILING"0"FROMROUND("Length"::numeric*3.28084,2))||''ft''AS"Length"错误代码我得到:ERROR:colu... 查看详情

没有科学记数法的回声数,同时去除尾随零和小数点

】没有科学记数法的回声数,同时去除尾随零和小数点【英文标题】:Echonumberwithoutscientificnotation,whileremovingtrailingzerosanddecimalpoints【发布时间】:2014-01-2720:32:43【问题描述】:这个:functionoutput($x)return(float)($x==0?\'0\':rtrim(($x<0?r... 查看详情

删除小数点雪花后的尾随零

】删除小数点雪花后的尾随零【英文标题】:RemovingtrailingzeroesafterdecimalSnowflake【发布时间】:2021-12-0111:24:52【问题描述】:我一直在尝试从小数点后的数字列中删除尾随零。例如:0.978219150000->0.978219150.650502591918->0.650502591918... 查看详情

在 ssis 中导出到 csv 时包括前导零

】在ssis中导出到csv时包括前导零【英文标题】:includeleadingzeroswhileexportingtocsvinssis【发布时间】:2018-04-2815:14:36【问题描述】:我有一个将数据从表导出到.csv文件的包,它导出了600000条记录。我有几列有前导零和尾随零,而导... 查看详情

使用 NSNumberFormatter 生成小数点后尾随零的数字

】使用NSNumberFormatter生成小数点后尾随零的数字【英文标题】:UsingNSNumberFormattertogeneratenumberwithtrailingzerosafterdecimal【发布时间】:2014-10-2805:57:44【问题描述】:在Swift中,您将如何创建一个NSNumberFormatter来保留小数点(12.000)后的尾... 查看详情

如何从sqlplus中的数字列中删除小数点后的尾随零?

】如何从sqlplus中的数字列中删除小数点后的尾随零?【英文标题】:Howtoremovetrailingzerosafterdecimalpointsfromnumbercolumninsqlplus?【发布时间】:2018-05-2411:57:34【问题描述】:我有一个名为Amount的数据库表字段,其类型为number(38,8),在sql... 查看详情

带逗号的 Oracle 格式数字删除尾随零小数

...】:在我的查询中,我试图用逗号输出数字,但我想删除小数点后的所有尾随零。例如:3132000.00->3,132,0004321.10->4,321.1132.01->132.01我一直在使用TO 查看详情

我想在使用 DecimalFormat 时保留尾随零

】我想在使用DecimalFormat时保留尾随零【英文标题】:IwanttokeepmytrailingzeroeswhenusingDecimalFormat【发布时间】:2017-04-2706:12:19【问题描述】:下面的代码是我尝试将我的三个双精度数转换为它们总是有四位小数的格式(因为我需要用... 查看详情

如何在Java中仅删除字符串的尾随空格并保留前导空格?

】如何在Java中仅删除字符串的尾随空格并保留前导空格?【英文标题】:HowtoremoveonlytrailingspacesofastringinJavaandkeepleadingspaces?【发布时间】:2013-06-0304:19:30【问题描述】:trim()函数会同时删除尾随和前导空格,但是,如果我只想删... 查看详情

如何在oracle数据库中保留小数点后两位而且在java中保留两位插入到数据表中

...表示存储在列中数字的总长度是p位:s表示范围,它表示小数点后的位数。该取值范围可以从-84到127。例如:CREATETABLEtest(namenumber(5))使用精度5来定义一个正数(如12345)。CREATETABLEtest(namenumber(5,2))使用精度5和范围2来定义一个数字... 查看详情

如何在oracle数据库中保留小数点后两位而且在java中保留两位插入到数据表中

...表示存储在列中数字的总长度是p位:s表示范围,它表示小数点后的位数。该取值范围可以从-84到127。例如:CREATETABLEtest(namenumber(5))使用精度5来定义一个正数(如12345)。CREATETABLEtest(namenumber(5,2))使用精度5和范围2来定义一个数字... 查看详情

如何从浮点值Swift 3中删除前导零

】如何从浮点值Swift3中删除前导零【英文标题】:HowtoRemoveleadingzeroesfromafloatvalueSwift3【发布时间】:2017-05-0900:03:33【问题描述】:鉴于Float价格为0.33,我想删除前导零和小数,以便我可以将其显示为33美分。【问题讨论】:【参... 查看详情

excel表格中,怎么把一列数字做除法,保留小数点两位?

...,点击“确定”。5、可以看到B2单元格的数据后多了两个小数点,将光标放在B2单元格的右下方。6、按住鼠标左键往下拖动,可以看到B2到B4单元格已经出现了A列数据除以2的结果,并且全部保留了小数点后两位数。参考技术A以... 查看详情

如何将一个数字保留到小数点后两位?

】如何将一个数字保留到小数点后两位?【英文标题】:Howtoflooranumbertotwodecimalplaces?【发布时间】:2021-06-0514:53:00【问题描述】:我正在尝试将双精度数据类型数字设置为小数点后两位,但当我输入150之类的数字时,我只能得到... 查看详情

BigDecimal 去除尾随零

...020-10-2918:19:20【问题描述】:我有一个BigDecimal值,并希望删除尾随零直到某个点。以下是一些示例:1.00000->1.012.2->12.219.9300->19.93请注意第一种情况,当所有小数都为零时,我们希望保留一个小数位。我想避免使用stripTrailin... 查看详情

如何从双精度中删除尾随零 [重复]

】如何从双精度中删除尾随零[重复]【英文标题】:Howtoremovetrailingzerosfromadouble[duplicate]【发布时间】:2012-12-2117:03:43【问题描述】:例如,我需要将5.0变为5,或将4.3000变为4.3。【问题讨论】:注意:与链接问题中的最佳答案不... 查看详情