大家好,
我正在使用私人API,我需要发送整数和双重值。
对于整数,我没有任何问题,我将整数转换为nsnumber,一切正常。
但没有十进制数字的双倍(例如46)我的请求被拒绝,因为服务器看到一个整数应该有双重。
我的系统管理员告诉我,以" .0"发送圆形价值,因此,如果我想发送双重46,我必须发送46.0。
问题是我无法发送NSSTRING或服务器也会拒绝我的请求(它将看到一个字符串,那里应该有双重)。
所以这是我的问题:有没有办法将代表性数字添加到NSNUMBERS?所以我的双人46将是nsnumber 46.0
任何人可以帮我吗?
预先感谢。
每当您初始化nsnumber时,都应使用
mynumber = [NSNumber numberWithDouble: myDoublevalue];
当您想将其发送到服务器时,请尝试
[mynumber doubleValue];
我想问题是:您用什么来创建nsnumber?
使用
NSNumber *intNumber = @(46);
将为您提供一个包含int
的NSNumber
,而
NSNumber *doubleNumber = [NSNumber numberWithDouble:46];
应导致包含double
的NSNumber
。
(您可以通过调用[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);