0

この 123456.567 のような数値を、米ドルの場合は 123,456.56、他の通貨の場合は 123,456.567 のようにしようとしています。

私のコードは次のとおりです。

double fromAgainstJOD = amountVal * fromCurrency.SellRate;
double result = fromAgainstJOD / toCurrency.SellRate;

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setGroupingSize:3];
[formatter setUsesGroupingSeparator:YES];

NSString* formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];

if (toCurrency.SellRate == 0) {
    result = 0;
}
if ([toCurrency.Code isEqualToString:@"USD"]) {
    [resultLbl setText:[NSString stringWithFormat:@"%@ %0.2f", toCurrency.Code, result]];     
} else {
    [resultLbl setText:[NSString stringWithFormat:@"%@ %0.3f", toCurrency.Code, result]]; 
}

だから私はresultLblに各通貨コードの千区切りと小数の数字を設定したい。米ドル => 2 端数 他の通貨 => 3 端数

4

2 に答える 2

1

これが修正です。USD が formatWidth を 2 に設定している場合は USD またはその他をチェックしているフォーマッターで、それ以外の場合は 3 に設定します。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setGroupingSize:3];
[formatter setUsesGroupingSeparator:YES];

NSString* formattedString;

if (toCurrency.SellRate == 0) {
    result = 0;
}
if ([toCurrency.Code isEqualToString:@"USD"]) {
    [formatter setFormatWidth:2];
    formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];
    [resultLbl setText:[NSString stringWithFormat:@"%@ %0.2f", toCurrency.Code, result]];     
}else
{
    [formatter setFormatWidth:3];
    formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];
    [resultLbl setText:[NSString stringWithFormat:@"%@ %0.3f", toCurrency.Code, result]]; 

}

動作しませんが、ios ドキュメントに setFormat が表示されているようです。

サンプル:

NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
NSMutableDictionary *newAttrs = [NSMutableDictionary dictionary];

[numberFormatter setFormat:@"$#,##0.00;($#,##0.00)"];
[newAttrs setObject:[NSColor redColor] forKey:@"NSColor"];
[numberFormatter setTextAttributesForNegativeValues:newAttrs];
[[textField cell] setFormatter:numberFormatter];

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSNumberFormatter_Class/Reference/Reference.html

于 2013-01-07T15:25:28.497 に答える
0

私はそれを行う方法を理解します

if ([toCurrency.Code isEqualToString:@"USD"]) {
    [formatter setFormatWidth:2];
    formatter.maximumFractionDigits = 3;
    formatter.minimumFractionDigits = 3;
    formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];

    [resultLbl setText:formattedString];
}else
{
    [formatter setFormatWidth:3];
    formatter.maximumFractionDigits = 2;
    formatter.minimumFractionDigits = 2;
    formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];
    [resultLbl setText:formattedString];
}
于 2013-01-14T07:22:45.937 に答える