Я хочу показать номер 13456 как 13.456K, 3456789 как 34.56L.Есть ли какой-либо форматируемый в IOS конвертировать с K (тыс.), L (Lakh), M (Million), C (Crore) суффиксы?Формат валюты с индийскими суффиксами IOS
ответ
Там нет библиотеки или SDK в iOS
для сокращения или конвертации валюты используя аббревиатуры, такие как K (тыс.), M (млн) аналогичным образом L (100 тысяч), C (10 миллионов) и т. Д., Поскольку эти сокращения отличаются в разных странах и регионах.
Вам придется преобразовать число в соответствии с категорией, в которой ваш номер падает, и используя NSNumberFormatter
с NSNumberFormatterCurrencyStyle
, вы можете отформатировать свой номер в соответствии с вашими требованиями.
Вы можете использовать следующий код для преобразования суммы валюты по вашему требованию:
float shortenedAmount = actualAmount;
NSString *suffix = @"";
if(currency >= 10000000.0f) {
suffix = @"C";
shortenedAmount /= 10000000.0f;
}
else if(currency >= 1000000.0f) {
suffix = @"M";
shortenedAmount /= 1000000.0f;
}
else if(currency >= 100000.0f) {
suffix = @"L";
shortenedAmount /= 100000.0f;
}
else if(currency >= 1000.0f) {
suffix = @"K";
shortenedAmount /= 1000.0f;
}
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:shortenedAmount]];
NSString *requiredString = [NSString stringWithFormat:@"%@%@", numberAsString, suffix];
Спасибо большое. Ты спас мое время :) – ayinala
IOS не содержит форматирования для этого суффикса.
Вы можете создать собственный форматировщик, используя расширение. Расширения добавят новые функции в вашу программу, и это определенно будет работать :)
Ссылка на extensions.
Пожалуйста, попробуйте ниже пользовательский метод -
-(NSString *)stringFormating:(int)numValue
{
NSString *valueString = [NSString stringWithFormat:@"%d", numValue];
if ([valueString length]>7)
{
NSString *strsecondPart= [valueString substringFromIndex:[valueString length] -7];
return [NSString stringWithFormat:@"%@.%dC",[valueString substringToIndex:[valueString length] -7],[strsecondPart intValue]];
}
else if ([valueString length]>5)
{
NSString *strsecondPart= [valueString substringFromIndex:[valueString length] -5];
return [NSString stringWithFormat:@"%@.%dL",[valueString substringToIndex:[valueString length] -5],[strsecondPart intValue]];
}
else if ([valueString length]>3)
{
NSString *strsecondPart= [valueString substringFromIndex:[valueString length] -3];
return [NSString stringWithFormat:@"%@.%dK",[valueString substringToIndex:[valueString length] -3],[strsecondPart intValue]];
}
return valueString;
}
NSLog(@"%@", [self stringFormating:100000]);
выход будет 1.0L
NSLog(@"%@", [self stringFormating:123456]);
выход будет 1.23456L
Это забавный способ манипулировать числом (смешным я имею в виду неэффективное и противодействующее интуитивное). У вас также есть несколько операторов 'return' без уважительной причины. – Droppy
Что K, L и C, и что есть отношения? Есть ли простой расчет для преобразования между ними? – Droppy
K-thousand (10^3), L-Lakh (10^5), C-crore (10^7) – ayinala
Для этих суффиксов нет форматирования, но вы можете создать свой собственный форматировщик, используя [Extension] (https: //developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html) – ridvankucuk