关于精确度-保留小数点后几位小数

之前在开发中,在处理一些CGFloat类型时发现了关于小数点后保留几位小数的一些问题:

保留小数点后一位小数:
  3.45 --> 3.5,4.95-->4.9

通过观察可以发现他不是四舍五入,看起来是没有规律的。这个不是我想要的结果。
我们的要求是保留小数点后一位小数,不用四舍五入,后面多余的位数直接舍弃。当时想到了两个方法。

1、 通过遍历字符串中小数点的位置,然后截取适当长度的字符串

NSString *score = @"将需要处理的数字转化为字符串";
if ([s
### Hive SQL 保留小数点后两位的方法 在Hive中,有多种方法可以实现数值保留小数点后两位。以下是几种常用的方式: #### 使用 `ROUND` 函数 虽然有时 `ROUND` 函数可能无法达到预期效果,但在大多数情况下仍然适用。此函数可以根据指定的小数位数对数值进行四舍五入。 ```sql SELECT ROUND(your_column, 2) FROM your_table; ``` 这种方法简单直观,适用于不需要严格控制精度的情况[^1]。 #### 使用 `CAST` 转换为 `DECIMAL` 类型 更可靠的做法是利用 `CAST` 将列转换成带有固定长度和精确度的 `DECIMAL` 数据类型。这不仅能够确保结果始终显示固定的两位小数,而且还能避免浮点误差带来的问题。 ```sql SELECT CAST(your_column AS DECIMAL(10, 2)) FROM your_table; ``` 这里 `(10, 2)` 表示总共允许的最大数字宽度为10位(包括整数部分),其中包含2位小数。根据实际需求调整这些参数即可满足不同场景下的应用[^4]。 #### 处理除法运算中的精度丢失 当涉及到除法操作时,直接相除可能会导致不必要的精度损失。因此,在这种情形下建议先将分子分母都强制转化为高精度的 `DECIMAL` 类型再做计算,从而保证最终得到的结果具有足够的准确性。 ```sql SELECT CAST(numerator * 1.0 / denominator AS DECIMAL(10, 2)) FROM your_table; ``` 通过乘以 `1.0` 可防止因整数除法而产生的截断现象;同时采用 `DECIMAL` 来限定输出格式,使得返回值稳定保持两位有效小数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值