我正在尝试在我的NSString中指定浮动指针编号的准确性,但我继续收到此错误:
Format指定类型'double',但参数的类型为'NSString *'
这是我的代码:
NSString *tmplabel = [tmp description];
temp.text = [NSString stringWithFormat: @"%.fº", tmplabel];
我做错了什么?
答案 0 :(得分:3)
您的tmplabel是{{1}},应该是NSString
。
如果您确定tmplabel拥有一个可以解析为简单双精度的数字,那么您可以在其上使用double
。否则,您可能需要使用错误处理等进行更精细的转换。
这是一个脚踏实地的简单方法:
doubleValue
temp.text = [NSString stringWithFormat: @"%.fº", [tmplabel doubleValue]];
方法(及其近亲doubleValue
和类似方法)解释字符串的内容,如果字符串的开头可以读作数字,将为您转换它并将其作为适当的基元类型返回。在您的情况下,基元类型为integerValue
。
您不能将对象(任何NS *)的类型转换为基本类型,但始终必须经过某种解释或编程转换。
最后,请注意直接在用户输入上使用double
是您希望在某个时刻重新访问的快捷方式,因此请记下使用数字格式化程序重新实现它doubleValue
之后。要了解原因,请尝试输入非数字数据,看看您对结果是否满意。
最后,要按照您的要求实际设置准确度(即小数点后的小数位数),请参阅下面的王子answer或DharaParekh's。
答案 1 :(得分:2)
试试这个
NSString *tmplabel = [tmp description];
temp.text = [NSString stringWithFormat: @"%.f", [tmplabel doubleValue]];
答案 2 :(得分:2)
试试这个:
NSString *tmplabel = [tmp description];
float tmp = [tmplabel floatValue];
temp.text = [NSString stringWithFormat: @"%.1f", tmp];
答案 3 :(得分:0)
{
temp.text = [NSString stringWithFormat: @"%.1f", tmplabel];
}
您可以更改f前面的数字以指定准确度。