Я пытаюсь отформатировать длинные числа в форме «k» для меток оси. Например; если у меня есть , я бы хотел, чтобы он отображался как 10k.Форматировать длинные номера для осевых меток основной сюжет
Я уже пытался ответить this ответ. Но мне не удалось получить форматированные числа. Что мне нужно сделать дополнительно? Пожалуйста, направляйте меня. Благодарю.
EDIT:
HumanReadableFormatter.h
@interface HumanReadableFormatter : NSNumberFormatter
@end
HumanReadableFormatter.m
Я изменил код из ссылки выше, чтобы соответствовать моим требованиям.
#import "HumanReadableFormatter.h"
@implementation HumanReadableFormatter
static const char sUnits[] = { '\0', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y' };
static int sMaxUnits = sizeof sUnits - 1;
-(NSString *) stringForObjectValue:(id)obj
{
int multiplier = 1000;
int exponent = 0;
double bytes = [(NSNumber *)obj doubleValue];
while ((bytes >= multiplier) && (exponent < sMaxUnits)) {
bytes /= multiplier;
exponent++;
}
return [NSString stringWithFormat:@"%@ %c", [super stringFromNumber: [NSNumber numberWithDouble: bytes]], sUnits[exponent]];
}
@end
График Код:
if(!rightY)
rightY = [[CPTXYAxis alloc]init];
rightY.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
rightY.orthogonalCoordinateDecimal = CPTDecimalFromFloat(totIntervalShown);
rightY.axisConstraints = [CPTConstraints constraintWithUpperOffset:-40];
rightY.coordinate = CPTCoordinateY;
rightY.majorTickLength = 0;
rightY.minorTickLength = 0;
rightY.tickDirection = CPTSignNone;
rightY.plotSpace = barPlotSpace;
NSNumberFormatter *numFormatter;
if(lowerLock < 1000) //if value is < 1000, normally format it
{
numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
numFormatter.maximumFractionDigits = 2;
numFormatter.minimumFractionDigits = 2;
}
else //for > 1000, format in human readable form
{
numFormatter = [[HumanReadableFormatter alloc] init];
//what i need to do here more?
}
rightY.labelFormatter = numFormatter;
//formatted as shown on right side on graph
вложенного цикла:
Привет @NightFury, Как u построить правую сторону оси Y с inte rval и plot. пожалуйста, помогите мне в этом – Marios