소수점 이하 2자리까지 두 배 값 반올림
나는 22.368511이라는 두 배의 값을 가지고 있습니다. 나는 그것을 소수점 2자리로 반올림하고 싶습니다. 즉, 그것은 22.37을 반환해야 합니다.
내가 어떻게 그럴 수 있을까?
대부분의 언어와 마찬가지로 형식은
%.2f
여기서 더 많은 예를 볼 수 있습니다.
편집 : 25.00의 경우에 포인트가 표시되는 것을 염려해 주신다면 저도 이를 받았습니다.
{
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.3]]);
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.0]]);
}
2010-08-22 15:04:10.614 a.out[6954:903] 25.34 2010-08-22 15:04:10.616 a.out[6954:903] 25.3 2010-08-22 15:04:10.617 a.out[6954:903] 25
아래 코드를 사용하여 소수점 2자리로 포맷할 수 있습니다.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:22.368511]];
NSLog(@"Result...%@",numberString);//Result 22.37
스위프트 4:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .up
let str = String(describing: formatter.string(from: 12.2345)!)
print(str)
value = (round(value*100)) / 100.0;
[label setText:@"Value: %.2f", myNumber];
Swift 2.0 및 Xcode 7.2의 경우:
let pi:Double = 3.14159265358979
String(format:"%.2f", pi)
예:
NSDecimalRound 기능을 사용할 수 있습니다.
두 배에서 소수점을 제거하려면 이 출력을 살펴봅니다.
오브제 C
double hellodouble = 10.025;
NSLog(@"Your value with 2 decimals: %.2f", hellodouble);
NSLog(@"Your value with no decimals: %.0f", hellodouble);
출력은 다음과 같습니다.
10.02
10
Swift 2.1 및 Xcode 7.2.1
let hellodouble:Double = 3.14159265358979
print(String(format:"Your value with 2 decimals: %.2f", hellodouble))
print(String(format:"Your value with no decimals: %.0f", hellodouble))
출력은 다음과 같습니다.
3.14
3
제이슨의 대답을 따르려고 했지만 마이 버전 Xcode(4.3.3)에서는 그렇게 할 수 없다는 것을 알게 되었습니다. 그래서 약간의 연구 끝에 그들이 최근 수업 방식을 변경하고 기존 방식을 모두 없앴다는 것을 알게 되었습니다.그래서 제가 어떻게 해야 했는지는 이렇습니다.
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:2];
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]);
NSNumber *aNumber = [NSNumber WithDouble:number]를 사용하고 NSNumber *aNumber = [NSNumber WithFloat:number] 대신 사용합니다.
+(NSString *)roundToNearestValue:(double)number
{
NSNumber *aNumber = [NSNumber numberWithDouble:number];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setUsesGroupingSeparator:NO];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMinimumFractionDigits:0];
NSString *string = [numberFormatter stringFromNumber:aNumber];
return string;
}
Swift의 경우 Foundation을 가져올 수 없거나 round()를 사용하거나 String(String)을 원하지 않는 경우(일반적으로 Playground에 있는 경우) 간단한 솔루션이 있습니다.
var number = 31.726354765
var intNumber = Int(number * 1000.0)
var roundedNumber = Double(intNumber) / 1000.0
결과: 31.726
Umberto Raimondi에서 게시한 솔루션을 Double 타입으로 확장합니다.
extension Double {
func roundTo(places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
이렇게 할 수 있습니다.
NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setFormat:@0.00"];
// test
NSNumber* a = @12;
NSString* s = [f stringFromNumber:a];
NSLog(@"%@", s);
언급URL : https://stackoverflow.com/questions/4985791/round-double-value-to-2-decimal-places
'programing' 카테고리의 다른 글
명령줄을 통해 변수를 파워셸 스크립트로 전달 (0) | 2023.09.07 |
---|---|
SQL 개발자에서 내보내기 프로세스 중지 (0) | 2023.09.07 |
마리아DB 커뮤니케이션즈예외:통신 링크 장애 (0) | 2023.09.07 |
파워셸에서 배치 스크립트를 어떻게 호출합니까? (0) | 2023.09.02 |
UI 테이블 뷰에서 횡단면 사이의 공간 (0) | 2023.09.02 |