我对NSDecimalNumber及其"行为"感到困惑.我有一个代表美元价值的NSDecimalNumber,比如37.50美元.我想知道多少次说5.0进入那个数字,然后知道剩下的是什么.我可以获得直线分度并获得7.50但我想要7 mod 2.50.我可以转换为整数,但需要保存"美分",所以想知道框架中是否有一些技巧?
给出以下代码:
int firstInt, secondInt;
firstInt = 5;
secondInt = 5;
NSNumber *firstNumber = [NSNumber numberWithInt:firstInt];
NSNumber *secondNumber = [NSNumber numberWithInt:secondInt];
Run Code Online (Sandbox Code Playgroud)
为什么在地球上这两个NSNumber实例指向同一个地址?
这让我抓狂!
当然,如果你将secondInt更改为'4',则所有工作都按预期工作.
谢谢,Jérémy
我正在尝试进行一些数字比较,我得到了一些奇怪的结果.
NSNumber* number1 = [NSNumber numberWithFloat:1.004];
NSNumber* number2 = [NSNumber numberWithDouble:1.004];
([number1 compare:number2] == NSOrderedSame) ? NSLog(@"YES") : NSLog(@"NO");
([number1 compare:number2] == NSOrderedAscending) ? NSLog(@"YES") : NSLog(@"NO");
([number1 doubleValue] == [number2 doubleValue]) ? NSLog(@"YES") : NSLog(@"NO");
([number1 floatValue] == [number2 floatValue]) ? NSLog(@"YES") : NSLog(@"NO");
Run Code Online (Sandbox Code Playgroud)
日志输出:
NO
YES
NO
YES
这对我来说非常令人沮丧.我知道这可能是因为浮点数与双精度数之间的差异.在我看来,它正在将双倍缩减到浮点数来进行比较.但如果我不知道如何创建数字,我该如何得到正确的结果呢?是否有不同的方法来比较NSNumber?
该inY属性给出了错误.什么是正确的语法?
UIButton *optionButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSObject* anim = @{@"target": target, @"inY": infoView.frame.size.height-100, @"outY": @800};
Run Code Online (Sandbox Code Playgroud)
尝试使用它创建一个变量,optionButton但它似乎不起作用.我认为我需要把它作为集合可以理解的东西.
我使用以下代码从inputString使用中提取数字NSScanner
NSString *inputString = @"Dhoni7 notout at183*runs in 145andhehit15four's and10sixers100";
NSString *numberString;
NSArray *elements = [inputString componentsSeparatedByString:@" "];
for (int i=0; i<[elements count];i++)
{
NSScanner *scanner = [NSScanner scannerWithString:[elements objectAtIndex:i]];
NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];
// Throw away characters before the first number.
[scanner scanUpToCharactersFromSet:numbers intoString:NULL];
// Collect numbers.
[scanner scanCharactersFromSet:numbers intoString:&numberString];
// Result.
int number = [numberString integerValue];
if (number != 0)
{
NSLog(@"%d\n",number);
numberString = nil;
}
}
Run Code Online (Sandbox Code Playgroud)
我的预期产量是7 183 145 15 10 100
但我得到的输出是7 …
如何将NSNumber数组转换为String数组以便在UITableView中显示值?
cell.textlabel.text = ?
Run Code Online (Sandbox Code Playgroud)
码:
var a = [68.208983, 6.373902, 1.34085, 3.974012, 110.484001,
61.380001, 1.325202, 0.8501030000000001, 0.8501030000000001,
0.8501030000000001, 3.647296, 1.28503]
Run Code Online (Sandbox Code Playgroud) 我收到了客户的崩溃日志,以了解我的应用程序崩溃iPhone的原因.
这里来自崩溃日志的一些信息:
Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x00000000, 0x00000000 Crashed Thread: 0
线程0的堆栈跟踪
Thread 0 Crashed: 0 libSystem.B.dylib 0x3293f98c 0x328c1000 + 518540 1 libSystem.B.dylib 0x3293f97c 0x328c1000 + 518524 2 libSystem.B.dylib 0x3293f96e 0x328c1000 + 518510 3 libSystem.B.dylib 0x3295461a 0x328c1000 + 603674 4 libstdc++.6.dylib 0x30a143b0 0x309cf000 + 283568 5 libobjc.A.dylib 0x3347a858 0x33475000 + 22616 6 libstdc++.6.dylib 0x30a12776 0x309cf000 + 276342 7 libstdc++.6.dylib 0x30a127ca 0x309cf000 + 276426 8 libstdc++.6.dylib 0x30a12896 0x309cf000 + 276630 9 libobjc.A.dylib 0x33479714 0x33475000 + 18196 10 CoreFoundation 0x335c8210 …
我想对NSNumbers执行一些简单的算术并保留类型.这可能吗?
例如:
- (NSNumber *)add:(NSNumber *)firstNumber to:(NSNumber *)secondNumber;
Run Code Online (Sandbox Code Playgroud)
是我的方法定义,firstNumber和secondNumber是整数然后我想返回一个整数,它们是两者的整数加法.同样,如果两者都是双打,那么将结果作为双精度返回.
看起来我可以使用[NSNumber objCType]在这个问题中找到的类型(布尔除外):获取NSNumber的类型但是我似乎无法提取这些类型并且在没有大量代码的情况下进行计算以提取值进行计算和返回每种可能类型的结果.
这样做有简短而简洁的方法吗?
我宣布:
static NSString *a = @"a";
Run Code Online (Sandbox Code Playgroud)
这是iOS6中的正确声明(使用编译器版本应该更正确,但目前我还不知道).我认为数字文字也是:
static NSNumber *b=@1;
Run Code Online (Sandbox Code Playgroud)
可能是一个有效的声明.编译器告诉我initializer element is not a compile time constant.这让我感到惊讶.既然NSNumber是不可变的NSString,因为我在字符串的情况下使用文字,我认为它也可以是有效的.
有没有人对这种差异有合理的解释?
我已将我的项目转换为swift 3,我遇到了NSNumber的问题,我无法处理.这是我的数字格式化声明
let numberFormatter: NumberFormatter = {
let nf = NumberFormatter()
nf.numberStyle = .decimal
nf.minimumFractionDigits = 0
nf.maximumFractionDigits = 1
return nf
}()
Run Code Online (Sandbox Code Playgroud)
这里有错误的地方.价值是双倍的,确保其他东西很好.
Label.text = numberFormatter.string(from: NSNumber(value))
Run Code Online (Sandbox Code Playgroud)
来自调试器的消息:
参数标签'(_ :)'与任何可用的重载都不匹配
在转换之前一切正常.请帮忙,我找不到