我需要以最高效的方式在有限宽度的区域中打印浮点数值。我正在使用一个
我需要保留小数点后最多两位数字,并且如果有小数点后的数字,总共最多只能有五位数字,但如果整数部分有更多数字,则应打印更多数字。
我在
NSNumberFormatter
,并将小数点后的两个数字设置为默认值,这样当我有一个像234.25
这样的数字时,它会原样打印: 234.25
。但是当我有1234.25
时,我希望它被打印为:1234.3
,而且如果11234.25
应该打印为11234
。我需要保留小数点后最多两位数字,并且如果有小数点后的数字,总共最多只能有五位数字,但如果整数部分有更多数字,则应打印更多数字。
我在
NSNumberFormatter
中没有看到限制数字总数的能力。这是否意味着我应该编写自己的函数以按此方式格式化数字?如果是这样,那么获取数字整数和小数部分的数字计数的正确方法是什么?我还更喜欢使用CGFLoat
而不是NSNumber
,以避免额外的类型转换。
NSNumberFormatter
实现这一点;从我的经验来看,如果输入的 log10(大约等于整数部分长度减1)大于5,则可以截断输入。 - jscsNSNumberFormatter
,每次输入的数字太长时,你可能需要稍微调整一下设置。否则,我猜类似于Dr. Kameleon提供的自定义函数可能是个方法。 - jscs