Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone ios双精度字符串,不带四舍五入_Iphone_Ios_Double_Rounding - Fatal编程技术网

Iphone ios双精度字符串,不带四舍五入

Iphone ios双精度字符串,不带四舍五入,iphone,ios,double,rounding,Iphone,Ios,Double,Rounding,下面的代码正在舍入我的纬度字符串。我不想让它变圆。双lat必须为41.04546 NSString *latitude= @"41.04546"; double lat= latitude.doubleValue; //it gives 41.0455 CLLocationCoordinate2D coordinat; coordinat.latitude= lat; 对于不能四舍五入的精确坐标。使用NSNumberFormatter - (NSNumber *)numberFromStri

下面的代码正在舍入我的纬度字符串。我不想让它变圆。双lat必须为41.04546

NSString *latitude= @"41.04546";
double lat= latitude.doubleValue;  //it gives 41.0455
CLLocationCoordinate2D coordinat;
coordinat.latitude= lat;
对于不能四舍五入的精确坐标。

使用NSNumberFormatter

- (NSNumber *)numberFromString:(NSString *)string

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init]; 
[numberFormatter setNumberStyle:kCFNumberFormatterDecimalStyle];
NSNumber *number = [numberFormatter numberFromString:@"41.04546"];       
NSLog(@"Number : %@ , Double value : %f",number,[number doubleValue]);   

Output:Number : 41.04546 , Double value : 41.045460

试试这句话

NSString *latitude= @"41.04546";
double lat= [latitude doubleValue];
NSLog(@"\n\n Value Lat ==>> %f",lat);

我已经搜索了NSNumberFormatter。但是我不知道。你会写代码吗?NSNumberFormatter*numberFormatter=[[NSNumberFormatter alloc]init];[numberFormatter setNumberStyle:kCFNumberFormatterDecimalStyle];NSNumber*number=[NumberFormatterNumberFromString:@“41.04546”];NSLog(@“编号:%@,双值:%f”,编号,[编号双值];输出:数字:41.04546,双值:41.045460该代码对我来说很好,它打印出来:41.045460你用什么方法知道它是41.0455?可能在没有足够精度的情况下打印值时发生舍入。我在调试控制台中看到lat为41.0455。@Maik639我也可以毫无问题地打印出来。但是我不能不舍入地分配双精度。我也试过了。它给出了相同的结果。@b我使用了这个代码,我得到的输出值是Lat==>>41.045460是的,它在输出控制台中的结果是41.045460。但在左侧面板(局部变量值)中,似乎是41.0455。如果要将此值指定给纬度和经度,则可以使用float value,mate。。我用它……好的。但我不明白为什么在局部变量面板中看起来是41.0455。它误导了我。我在想我把地图的焦点放错地方了。