objective-c – 用于距离的Objective C字符串格式化程序

前端之家收集整理的这篇文章主要介绍了objective-c – 用于距离的Objective C字符串格式化程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个距离作为一个浮动,我正在寻找一种方式来格式很好地为人类读者.理想情况下,我希望它从m变化到km,随着它变大,并且数字很好.转换为里程将是一个奖金.我相信很多人都需要其中的一个,我希望有一些代码在某处浮动.

以下是我想要的格式:

> 0-100m:47m(整数)
> 100-1000m:325m或320m(圆到最近的5或10米)
> 1000-10000m:1.2km(圆形到最接近一个小数位)
> 10000m:21km

如果没有可用的代码,我该怎么写我自己的格式化程序?

谢谢

解决方法

这些解决方案都没有真正满足我正在寻找的东西,所以我建立在它们之上:
  1. #define METERS_TO_FEET 3.2808399
  2. #define METERS_TO_MILES 0.000621371192
  3. #define METERS_CUTOFF 1000
  4. #define FEET_CUTOFF 3281
  5. #define FEET_IN_MILES 5280
  6.  
  7. - (NSString *)stringWithDistance:(double)distance {
  8. BOOL isMetric = [[[NSLocale currentLocale] objectForKey:NSLocaleUsesMetricSystem] boolValue];
  9.  
  10. NSString *format;
  11.  
  12. if (isMetric) {
  13. if (distance < METERS_CUTOFF) {
  14. format = @"%@ metres";
  15. } else {
  16. format = @"%@ km";
  17. distance = distance / 1000;
  18. }
  19. } else { // assume Imperial / U.S.
  20. distance = distance * METERS_TO_FEET;
  21. if (distance < FEET_CUTOFF) {
  22. format = @"%@ feet";
  23. } else {
  24. format = @"%@ miles";
  25. distance = distance / FEET_IN_MILES;
  26. }
  27. }
  28.  
  29. return [NSString stringWithFormat:format,[self stringWithDouble:distance]];
  30. }
  31.  
  32. // Return a string of the number to one decimal place and with commas & periods based on the locale.
  33. - (NSString *)stringWithDouble:(double)value {
  34. NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
  35. [numberFormatter setLocale:[NSLocale currentLocale]];
  36. [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
  37. [numberFormatter setMaximumFractionDigits:1];
  38. return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:value]];
  39. }
  40.  
  41. - (void)viewDidLoad {
  42. [super viewDidLoad];
  43.  
  44. double distance = 5434.45;
  45. NSLog(@"%f meters is %@",distance,[self stringWithDistance:distance]);
  46.  
  47. distance = 543.45;
  48. NSLog(@"%f meters is %@",[self stringWithDistance:distance]);
  49.  
  50. distance = 234234.45;
  51. NSLog(@"%f meters is %@",[self stringWithDistance:distance]);
  52. }

猜你在找的C&C++相关文章