NSnumber具有代表性数(.0)的NSSTRING格式(.0)



大家好,

我正在使用私人API,我需要发送整数和双重值。

对于整数,我没有任何问题,我将整数转换为nsnumber,一切正常。

但没有十进制数字的双倍(例如46)我的请求被拒绝,因为服务器看到一个整数应该有双重。

我的系统管理员告诉我,以" .0"发送圆形价值,因此,如果我想发送双重46,我必须发送46.0。

问题是我无法发送NSSTRING或服务器也会拒绝我的请求(它将看到一个字符串,那里应该有双重)。

所以这是我的问题:有没有办法将代表性数字添加到NSNUMBERS?所以我的双人46将是nsnumber 46.0

任何人可以帮我吗?

预先感谢。

每当您初始化nsnumber时,都应使用

mynumber = [NSNumber numberWithDouble: myDoublevalue];

当您想将其发送到服务器时,请尝试

[mynumber doubleValue];

我想问题是:您用什么来创建nsnumber?

使用

NSNumber *intNumber = @(46);

将为您提供一个包含intNSNumber,而

NSNumber *doubleNumber = [NSNumber numberWithDouble:46];

应导致包含doubleNSNumber

(您可以通过调用[intNumber objCType]进行检查,它将给出" I",[doubleNumber objCType将给出" D")

您可能遇到的另一个问题是您(或您使用的API)使用某种格式转换为JSON或其他方式。

普通JSON转换器将省略.0,因此您可能会遇到错误。

因此,如果您可以访问JSON(或您使用的其他格式转换,因为您永远不会将NSNUMBER发送到任何服务器),则可以在此处修复。

最后一点,如果上面的两个点没有任何帮助,您可以考虑添加一个很小的数字,这会迫使一个点,但在正常情况下不会有很大的不同:

input = pow(2,log2(fabs(input))-50) //use 20 instead of 50 for float numbers!
NSNumber *result = @(input);

最新更新