在我的应用程序中,我有一些随机浮点数。我必须确定零点的开始时间在哪里切断数字并在UILabel中显示。
所以,例如,如果我有数字3.05,它显示为3.0500000,而我希望它正确显示'3.05'。
答案 0 :(得分:3)
最简单的方法是使用长度限制,如@“%。2f”。但我认为如果你想要使用这个:你应该使用这个:
NSString* string = [[NSString stringWithFormat: @"%f", 3.05000000] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"0"]];
将返回3.05
NSString* string = [[NSString stringWithFormat: @"%f", 3.0500100000] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @"0"]];
将返回3.05001而@“%。2f”将返回3.05
您应该注意到舍入错误,因此对于数字3.0500000010000,将返回字符串3.05。
答案 1 :(得分:2)
// Print max two numbers after the decimal point
NSString *string = [NSString stringWithFormat:@"%.2f", number];
如果您需要计算出前0的位置,请将其渲染为字符串,然后搜索该字符串以查找第一个'0'
// Render the complete string
NSString *completeNumber = [NSString stringWithFormat:@"%f", number];
// Get the first 0
NSRange range = [completeNumber rangeOfString:@"0"];
// Trim the string
NSString myString = [completeNumber substringWithRange:NSMakeRange(0, range.location)];
答案 2 :(得分:0)
你试过了吗?
NSString* myNumber = [NSString stringWithFormat:@"%.02f", number];
有两位数:
@"%.02f" = 3.05
有3位数:
@"%.03f" = 3.050
答案 3 :(得分:0)
你的问题有问题:浮动中没有重复的零。更具体地说,3.05的浮点表示实际上不等于3.05 - 它实际上更像是3.04999999999999982236431605997495353221893310546875。如果这很重要,最好的选择是使用NSDecimalNumber及其字符串转换方法。它可以精确地表示基数为10的数字,与二进制浮点数不同。