【问题标题】:NSDictionary and JSON valueNSDictionary 和 JSON 值
【发布时间】:2014-03-27 15:02:32
【问题描述】:

我的 JSON 中有这个:

{"idAlunoGraduacao":001,"semestre":2,"ano":2010,"frequencia":100,"notaFinal":6,"conceito":"Aprovado","idTurma":"Biofisica"}, 
{"idAlunoGraduacao":002,"semestre":2,"ano":2010,"frequencia":88,"notaFinal":9.2,"conceito":"Aprovado","idTurma":"Diversidade sexual"}

在我的 .h 文件中,我有这个循环:

for (NSDictionary *dados in results)
    NSLog(@"%@",[dados objectForKey:@"notaFinal"]);

第一个“notaFinal”是 6 并且打印正常,但是当打印第二个时结果是:9.199999999999999

为什么?

【问题讨论】:

  • 这不是 JSON。 JSON 不会有两个 {} 括起来的字符串,中间有一个逗号,它们之外没有任何内容。
  • 至于你明显的问题,搜索“浮点不准确”。
  • 您可以考虑在显示/输出上格式化浮点数以避免这种情况;例如NSLog(@"Value: %.2f", [dados objectForKey:@"notaFinal"]);
  • 使用 NSObject 模型类来解析这个字典

标签: ios objective-c json nsdictionary floating-accuracy


【解决方案1】:

您的 JSON 不是 JSON,下一个代码是 JSON

[ { “idAlunoGraduacao”:1, “学期”:2, “无”:2010 年, “频率”:100, "notaFinal": 6, “conceito”:“Aprovado”, “idTurma”:“Biofisica” }, { “idAlunoGraduacao”:2, “学期”:2, “无”:2010 年, “频率”:88, “notaFinal”:9.2, “conceito”:“Aprovado”, “idTurma”:“多元化性” } ]

此外,您的 JSON 与 Literal NSDictionary 非常相似。

@{@"idAlunoGraduacao":@001,@"semestre":@2,@"ano":@2010,@"frequencia":@100,@"notaFinal":@6,@"conceito":@"Aprovado",@"idTurma":@"Biofisica"};

然后,你说:“在我的 .h 文件中我有这个循环:”,我很确定你的 .m 中有这个循环

在 Objective-C 中是使用curly brackets in for 循环和 if-else 的最佳实践:

for (NSDictionary *dados in results)
{
    NSLog(@"%@",[dados objectForKey:@"notaFinal"]);
}

最后,正如@Koray_Alkan 所说,您可以使用

NSLog(@"Value: %.2f", [[dados objectForKey:@"notaFinal"] floatValue]);

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 2016-02-23
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多