Objective C 距离字符串格式化程序
我有一个距离作为浮动,我正在寻找一种方法来为人类读者很好地格式化它。理想情况下,我希望随着它变大,它从 m 变为 km,并很好地舍入数字。转换成里程将是一个额外的好处。我确信很多人都需要其中之一,我希望有一些代码在某个地方。
以下是我想要的格式:
- 0-100m:47m(作为整数)
- 100-1000m:325m 或 320m(四舍五入到最接近的 5 或 10 米)
- 1000-10000m:1.2km(四舍五入到最接近的小数点后一位) place)
- 10000m +: 21km
如果没有可用的代码,我如何编写自己的格式化程序?
谢谢
I have a distance as a float and I'm looking for a way to format it nicely for human readers. Ideally, I'd like it to change from m to km as it gets bigger, and to round the number nicely. Converting to miles would be a bonus. I'm sure many people have had a need for one of these and I'm hoping that there's some code floating around somewhere.
Here's how I'd like the formats:
- 0-100m: 47m (as a whole number)
- 100-1000m: 325m or 320m (round to the nearest 5 or 10 meters)
- 1000-10000m: 1.2km (round to nearest with one decimal place)
- 10000m +: 21km
If there's no code available, how can I write my own formatter?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这些解决方案都没有真正满足我的需求,所以我在它们的基础上进行了构建:
None of these solutions really met what I was looking for, so I built on them:
iOS 7 和 OS X 10.9 引入了 MKDistanceFormatter 用于格式化距离:
代码示例:
更新:
MKDistanceFormatter 似乎以某种方式对输入值进行舍入。例如,当我将 myDistance 设置为 111.0 时,我得到“100 m”。
iOS 7 and OS X 10.9 introduced MKDistanceFormatter for formatting distances:
Code Example:
Update:
It seems that MKDistanceFormatter is rounding the input value somehow. E.g. when I set myDistance to 111.0 I get "100 m".
是的,你需要编写自己的格式化程序,例如
Yes you need to write your own formatter, like
NSLengthFormatter
其中随着 iOS 8 和 OS X 10.10 的推出,人们应该意识到这一选项。但是,
NSLengthFormatter
在使用公制(距离除外)的区域设置中不使用英制单位。NSLengthFormatter
which was introduced with iOS 8 and OS X 10.10 is an option people should be aware of.However,
NSLengthFormatter
has doesn't use Imperial units in those locales where they use metric except for distances.我是这样做的。这使用用户的区域设置来正确格式化字符串,您可能也应该这样做。
Here's how I do it. This uses the locale of the user to properly format the string, which you should probably do too.
今天发现这个问同样的问题....going with :
如果需要的话可以将其包装在一个方法中
found this today asking the same question....going with :
could wrap this in a method, if need be
对于那些正在寻找 swift 2.0 版本的人。移植自@MattDiPasquale
For those looking for a swift 2.0 version. Ported from @MattDiPasquale