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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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 NSNumber二进制表达式的无效操作数(NSNumber*”和';双';)_Ios_Expression_Nsnumber_Operands - Fatal编程技术网

iOS NSNumber二进制表达式的无效操作数(NSNumber*”和';双';)

iOS NSNumber二进制表达式的无效操作数(NSNumber*”和';双';),ios,expression,nsnumber,operands,Ios,Expression,Nsnumber,Operands,我有下面一行代码 NSNumber *myValue = loadTempValue*0.420; 当我试图将*myValue的值设置为loadTempValue*0.420的值时 但是,我得到了错误 二进制表达式('NSNumber*“和'double')的操作数无效。 有人能告诉我怎么做吗?试试: NSNumber*myValue=@([loadTempValue doubleValue]*0.420); 或 NSNumber*myValue=[NSNumber numberWithDou

我有下面一行代码

NSNumber *myValue = loadTempValue*0.420;
当我试图将
*myValue
的值设置为
loadTempValue*0.420
的值时

但是,我得到了错误

二进制表达式('NSNumber*“和'double')的操作数无效。

有人能告诉我怎么做吗?

试试:

NSNumber*myValue=@([loadTempValue doubleValue]*0.420);


NSNumber*myValue=[NSNumber numberWithDouble:([loadTempValue doubleValue]*0.420)];
似乎
loadTempValue
也是一个
NSNumber
。在这种情况下,您需要:

NSNumber *myValue = @([loadTempValue doubleValue] * 0.420);
为什么要对这些值使用
NSNumber
对象

如果
loadTempValue
是一个
double
,您可以执行以下操作:

double myValue = loadTempValue * 0.42;

loadTempValue
是一个
NSNumber*
0.420
是一个
float
。您试图将一个对象乘以编译器不理解的float

您要执行的操作是从
loadTempValue
获取浮点值,然后将其乘以
0.420
。您可以这样做:

[loadTempValue floatValue] * 0.420;
从这里开始,您似乎想将该值放回
NSNumber*
对象中,您可以这样做:

@([loadTempValue floatValue] * 0.420);
NSNumber *myValue = @([loadTempValue floatValue] * 0.420);
最近,Objective-C引入了
@(…)
语法。它被称为数字的对象文字表示法。这是一种书写
[NSNumber numberWithFloat:…]的简写方法。

最后,您需要将结果分配给名为
myValue
的变量;您可以这样完成:

@([loadTempValue floatValue] * 0.420);
NSNumber *myValue = @([loadTempValue floatValue] * 0.420);

更好的问题是,为什么您认为可以为对象指针指定一个
double
值?@rmaddy请解释一下?谢谢。loadTempValue由NSNumber*loadTempValue=[默认objectForKey:@“tempValue”]设置从你的评论来看,我认为这是错误的?如果是,我应该怎么做?你可以这样做:
double-loadTempValue=[defaults-doubleForKey:@“tempValue”];
。假设
defaults
NSUserDefaults
。好的。是的,它是NSUserDefaults。那么这更好(对)这样做的方式?我可以问一下推理吗?简单地说,就好像我更全面地理解推理一样,我将来更有可能把它做对,并且让我记住它!NSNumber有它的位置。使用正确的工具来做正确的工作。如果你在做数学,使用简单的类型(如
double
)更容易。如果你需要存储这些值在数组或字典中,将值包装在
NSNumber
中。谢谢!如果我理解正确,请在正常情况下使用简单类型,但在存储时只需将它们包装在NSNumber中。再次感谢。什么是
loadTempValue