I'm seeing an issue with CFNumberFormatterCreateStringWithNumber
. I used this Apple code example:
// Works fine with float:
float n = 1.20;
CFNumberRef value = CFNumberCreate(NULL, kCFNumberFloatType, &n);
CFLocaleRef currentLocale = CFLocaleCopyCurrent();
// Create different number formatters
CFNumberFormatterRef decimalFormatter = CFNumberFormatterCreate(NULL, currentLocale, kCFNumberFormatterDecimalStyle);
CFStringRef decimalString = CFNumberFormatterCreateStringWithNumber(NULL, decimalFormatter, value);
// Using an INT I see an issue
int n = 892385;
CFNumberRef value = CFNumberCreate(NULL, kCFNumberSInt32Type, &n);
CFLocaleRef currentLocale = CFLocaleCopyCurrent();
// Create different number formatters
CFNumberFormatterRef decimalFormatter = CFNumberFormatterCreate(NULL, currentLocale, kCFNumberFormatterDecimalStyle);
CFStringRef decimalString = CFNumberFormatterCreateStringWithNumber(NULL, decimalFormatter, value);
/// release, release, release
The error I see when using an INT value (instead of float) is:
<CFNumber 0x5ac27 [0x7fff9856ed80]>{value = +1452, type = kCFNumberSInt32Type}
2017-03-05 21:42:06.789577 HID_Dumper[4390:150864] -[__NSCFNumber _getCString:length:multiplier:]: unrecognized selector sent to instance 0x2e4027
Your code up there empirically worked for me. I only needed to make a couple of cosmetic changes:
which results in an output of: