CGFloat转NSString保持原有的精度,末尾不添加0

2024-06-23 01:04

本文主要是介绍CGFloat转NSString保持原有的精度,末尾不添加0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题阐述:

我们进行CGFloat转NSString可能会遇到一个问题

例如有一个CGFloat的值为2.1,转化成NSString后显示2.1000...

解决办法:

方法一:

如何解决呢,可以使用%g格式符,可以保证传入的不管是2还是2.1都能保持原有的精度

%g格式符可以根据数值的大小自动选择最合适的表示方法,同时避免多余的小数位数。这将确保输入的 2.1 在转换后输出仍然是 2.1。

CGFloat myFloat = 2.1;
NSString *myString = [NSString stringWithFormat:@"%g", myFloat];
NSLog(@"%@", myString); // 输出: 2.1

 方法二:

我们也可以使用一个自定义一个方法来实现

- (NSString *)stringFromCGFloat:(CGFloat)floatValue {// 将 CGFloat 转换为字符串NSString *floatString = [NSString stringWithFormat:@"%g", floatValue];// 查找小数点的位置NSRange dotRange = [floatString rangeOfString:@"."];// 如果有小数点,则返回完整的字符串if (dotRange.location != NSNotFound) {return floatString;}// 如果没有小数点,则返回整数部分的字符串return [NSString stringWithFormat:@"%.0f", floatValue];
}

这篇关于CGFloat转NSString保持原有的精度,末尾不添加0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085892

相关文章

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

如何让应用在清除内存时保持运行

最近在写聊天软件。一个聊天软件需要做到在清除内存时仍能保持其应有的状态。      首先,我尝试在应用的Service中的onDestroy()进行重启应用,经过测试,发现被强制清除内存的应用不会调用Service的onDestroy,只会调用activity的onDestroy(),于是我决定在触发activity的onDestroy( )处发送广播给应用的静态广播接收器,然后让广播

《长得太长也是错?——后端 Long 型 ID 精度丢失的“奇妙”修复之旅》

引言 在前后端分离的时代,我们的生活充满了无数的机遇与挑战——包括那些突然冒出来的让人抓狂的 Bug。今天我们要聊的,就是一个让无数开发者哭笑不得的经典问题:后端 Long 类型 ID 过长导致前端精度丢失。说到这个问题,那可真是“万恶之源”啊,谁让 JavaScript 只能安全地处理 Number.MAX_SAFE_INTEGER(也就是 9007199254740991)以内的数值呢?

CentOS7系统下安装mysql5.7从下载到安装,,,,末尾附带redis安装教程二〇一八年十月三十日

改了将近三个月的前端bug了, 感觉java不会了 ,最近想温习一下linux系统, 当然,我这种穷b是没钱买服务器的, 只能自己下载个虚拟机玩玩......(台式机没有独立网卡的不要下载最新版的虚拟机,最新版的虚拟机好像需要有网卡支持什么的,,,有独立网卡的随意,)      安装虚拟机, 安装linux系统, 我得系统是这个版本的: 命令  cat /etc/issue

关于精度的问题

在一些问题中经常会遇到一些关于精度的保留; 1.要求保留小数后n位小数:代码如下 #include<stdio.h>int main(){double num = 1.123456789;int n = 6;printf("%0.*lf\n",n,num);    //1.123457return 0;} 注意,他会在小数点第n+1位四舍五入; 2.要求截取小数后n位,也就是不四舍五

蓝牙技术|超高精度蓝牙位置服务将成为蓝牙定位产品发展方向

随着市场需求的变化,精确的距离测量成为提升安全性和用户体验的重要因素。预计未来五年蓝牙位置服务设备的年均增长率为22%,到2028年出货量将达到5.63亿台。 为了满足这一需求,SIG即将在2024年下半年推出一项新功能——蓝牙信道探测(Bluetooth Channel Sounding)。这项新技术基于相位测量(PBR)和往返时间(RTT)两种测距方式,为蓝牙设备带来安全且精确的测距功能。

PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度

题目:PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds来源:CVPR2021机构:香港大学论文:https://arxiv.org/abs/2103.14635代码:https://github.com/CVMI-Lab/PAConv 前言 PAConv,全称为位置自适应卷积

【matlab】双精度每字符占8字节,单精度每字符占4字节

>> help magicmagic - Magic squareThis MATLAB function returns an n-by-n matrix constructed from the integers 1through n^2 with equal row and column sums.M = magic(n)magic 的参考页另请参阅 ones, rand>> a = ma

day-49 让所有学生保持开心的分组方法数

思路 利用Collections.sort()函数对数组进行排序,依次向后遍历即可,如果nums.get(i)<i+1&&nums.get(i+1)>i+1 解题过程 注意特殊情况:全选和不选要单独讨论 Code class Solution {public int countWays(List<Integer> nums) {int len=nums.size();Collections