3
A
回答
9
@interface NSDecimalNumber (IsIntegerNumber)
@property (readonly) BOOL isIntegerNumber;
@end
@implementation NSDecimalNumber (IsIntegerNumber)
-(BOOL)isIntegerNumber {
NSDecimalValue value = [self decimalValue];
if (NSDecimalIsNotANumber(&value)) return NO;
NSDecimal rounded;
NSDecimalRound(&rounded, &value, 0, NSRoundPlain);
return NSDecimalCompare(&rounded, &value) == NSOrderedSame;
}
@end
+1
Swift版本在這裏:https://stackoverflow.com/a/46331176/1187415。 –
-3
試試這個,你可以跳過第一行,我只是用它來創建一個NSDecimalNumber對象
NSDecimalNumber *decNumb=[NSDecimalNumber decimalNumberWithString:@"20.5"];//try with just 20
NSString* str=[NSString stringWithFormat:@"%@",decNumb];
if ([str rangeOfString:@"."].location==NSNotFound && [str rangeOfString:@"-"].location==NSNotFound) {
NSLog(@"it is whole number");
}
else
NSLog(@"it is not whole number");
3
從十進制數減去整數。如果差值爲零,那麼十進制數是一個整數。
// testVal is NSDecimalNumber
NSString *test = [testVal stringValue];
int intVal = [test intValue];
double doubleVal = [test doubleValue];
if(doubleVal-intVal == 0){
NSLog(@"Whole number!");
}
或者,得到的整數,並比較原始值:
if(intVal == doubleVal){
NSLog(@"Whole number!");
}
0
你能不能用IF((%1)== 0)
0
@implementation NSDecimalNumber (isWholeNumber)
-(BOOL)isWholeNumber
{
double x = [self doubleValue]; //The approximate value of the receiver as a double.
double y = floor (x);
if(fabs(x - y) < DBL_EPSILON)
return YES;
return NO;
}
@end
// [myDecNumber isWholeNumber];
3
這應該管用。
當心使用將NSDecimalNumber
轉換爲double
的方法。
NSDecimalNumber* input = [...];
NSDecimal roundedDecimal;
NSDecimalRound(&roundedDecimal, [input decimalValue], 0, NSRoundPlain);
NSDecimalNumber* roundedNumber = [NSDecimalNumber decimalNumberWithDecimal:roundedDecimal];
BOOL inputIsWholeNumber = [input isEqualToNumber:roundedNumber];
您還應該檢查NaN
的值。
0
不知道爲什麼,但由於某種原因,我無法獲得喬迪Hagins'或Sulthan的解決方案來工作,所以我去了一個稍微不同的方式:
-(BOOL)isWholeNumber:(NSDecimalNumber *)number {
NSDecimalNumber *input = number;
NSDecimalNumberHandler *handler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
scale:0
raiseOnExactness:NO
raiseOnOverflow:NO
raiseOnUnderflow:NO
raiseOnDivideByZero:NO];
NSDecimalNumber *vOne = [NSDecimalNumber decimalNumberWithString:@"1"];
NSDecimalNumber *result = [number decimalNumberByMultiplyingBy:vOne
withBehavior:handler];
BOOL inputIsWholeNumber = [input isEqualToNumber:result];
return inputIsWholeNumber;
}
相關問題
- 1. 檢查整數是否爲空
- 2. 檢查輸入是否爲整數
- 3. PL/SQL檢查是否爲整數
- 4. 檢查double值是否爲整數Swift
- 5. 檢查它是否爲整數
- 6. 檢查值是否爲整數(Objective-C)
- 7. 檢查整個數組是否爲instanceof
- 8. 檢查輸入是否爲正整數
- 9. 檢查是否是NSString的整數
- 10. 檢查輸入是否是整數
- 11. 檢查整個向量是否爲零
- 12. Java,檢查整數是否是數字的整數
- 13. 檢查整數值是否增加?
- 14. 檢查用戶是否輸入整數
- 15. 如何檢查數據是否完整
- 16. 如何檢查Cell是否有整數?
- 17. 檢查布爾是否等於整數
- 18. 檢查整數是否太大
- 19. 檢查數組中的所有字符是否爲整數
- 20. 檢查字符串是否爲整數(包括負數)PHP
- 21. 如何檢查命令行參數是否爲整數
- 22. 檢查整數在常規中是否爲空或數字?
- 23. 如何檢查數值是否爲整數?
- 24. 如何檢查模板的參數類型是否爲整數?
- 25. 檢查數值是否爲有效整數
- 26. 如何檢查一個變量是否爲整數
- 27. 如何檢查.NET十進制值是否爲整數?
- 28. 檢查命令行輸入是否爲有效整數(C)
- 29. 如何檢查字符串是否爲正整數?
- 30. Javascript - 檢查字符串是否可以轉換爲整數?
什麼具有u試過? – IronManGill
我不確定。那麼'if([myDecNumber isEqualToNumber:[myDecNumber integerValue]]''? –
只需將您的十進制值轉換爲int並檢查其是否相同 – muffe