Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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
Ios 在目标c中以数字格式在字典中添加浮点值_Ios_Objective C_Iphone_Double_Nsdictionary - Fatal编程技术网

Ios 在目标c中以数字格式在字典中添加浮点值

Ios 在目标c中以数字格式在字典中添加浮点值,ios,objective-c,iphone,double,nsdictionary,Ios,Objective C,Iphone,Double,Nsdictionary,当我们在字典中添加int变量时,我们需要将其转换为NSNumber格式 int f3 = 32; int f4 = 35; NSNumber* num3 = [NSNumber numberWithInt:f3]; NSNumber* num4 = [NSNumber numberWithInt:f4]; NSDictionary *params1 = @{@"num3": num3, @"num4" : num4}; 当我们看到字典的值时 num3 = 32; num4 = 35; 此

当我们在字典中添加int变量时,我们需要将其转换为NSNumber格式

int f3 = 32;
int f4 = 35;

NSNumber* num3 = [NSNumber numberWithInt:f3];
NSNumber* num4 = [NSNumber numberWithInt:f4];

NSDictionary *params1 = @{@"num3": num3, @"num4" : num4};
当我们看到字典的值时

num3 = 32;
num4 = 35;
此输出在字典中 但是当我们在字典中添加浮点值时

float f1 = 12.123456;
float f2 = 15.123456;

NSNumber* num1 = [NSNumber numberWithFloat:f1];
NSNumber* num2 = [NSNumber numberWithFloat:f2];

NSDictionary *params = @{@"num1": num1, @"num2" : num2};
我在字典中得到的值是字符串而不是数字切碎,我在双引号中得到的值

num1 = "12.12346";
num2 = "15.12346";

请任何人帮助我。。。我希望字典中的浮点值是数字形式的。

对于上述问题,在转换为数字或Dict时,您必须使用
双精度

请检查以下代码:

float f1 = 12.123456;
float f2 = 15.123456;

double f3 = 12.123456;
double f4 = 15.123456;

NSNumber* num1 = [NSNumber numberWithFloat:f1];
NSNumber* num2 = [NSNumber numberWithFloat:f2];
NSNumber* num3 = [NSNumber numberWithDouble:f3];
NSNumber* num4 = [NSNumber numberWithDouble:f4];

NSDictionary *params = @{@"num1": num1, @"num2" : num2,@"num3": num3, @"num4" : num4};
要以浮点形式获取值,请执行以下操作:

NSNumber *outNum1 = params[@"num1"];

NSLog(@"Float value = %f",outNum1.floatValue);
从上面的日志记录:

{
    num1 = "12.12346";
    num2 = "15.12346";
    num3 = "12.123456";
    num4 = "15.123456";
}

希望这会有帮助

值存储为NSNumber格式。这只是
NSLog
的打印表示。您可以像这样访问值

if ([[params objectForKey:@"num1"] isKindOfClass:[NSNumber class]]){
    NSLog(@"Stored as Number");
}
else{
    NSLog(@"Stored as String");
}
输出为:

Stored as Number
你说得对

float f1 = 12.123456;
float f2 = 15.123456;

NSNumber* num1 = [NSNumber numberWithFloat:f1];
NSNumber* num2 = [NSNumber numberWithFloat:f2];

NSDictionary *params = @{@"num1": num1, @"num2" : num2};


NSLog(@"%@",[params valueForKey:@"num1"]);
请从字典中获取值,然后您将得到您的答案

这看起来像字符串,但值是float

请查看图片:


实际上,我需要dict中的值,不带双引号,而不是字符串格式,我需要数字值。。我不能得到那个…:(它在日志中以双引号显示,但实际值是数字双引号&数字浮点数,您可以访问,就像我在回答中更新的一样。是的,但我需要将浮点数存储在dict中。您以正确的方式将数字添加到dict中。当您尝试使用
NSLog
打印时,数字中会添加双引号。这是NSLog的本质。请参阅以下链接:[1]:
float f1 = 12.123456;
float f2 = 15.123456;
int yourDecimalLimit=1000000.0;
NSNumber* num1 = @((int)(f1*yourDecimalLimit)/yourDecimalLimit);
NSNumber* num2 = @((int)(f2*yourDecimalLimit)/yourDecimalLimit);
NSDictionary *params = @{@"num1": num1, @"num2" : num2};

output
{
num1 = "12.123456";
num2 = "15.123456";
}