表示电话号码的正确方法是什么?

新手上路,请多包涵

我在我的一个应用程序中表示手机号码时遇到问题。

我想知道是否有一个 Integer 类可以让你存储这样一个以 0417254482 开头的数字。也许使用字符串更合适?目前,当我尝试使用整数表示电话号码时,我似乎存储了随机数而不是我打算存储的数字。

原文由 user420344 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 513
2 个回答

使用 String 。除此之外,如果您使用整数,您将无法存储前导零。您 绝对 不应该使用 int (太小) floatdouble (数据丢失风险太大); longBigInteger 可能是合适的(除了前导零问题),但坦率地说我会选择 String 这样,如果您愿意,您 还可以 存储用户输入的任何破折号或空格,以便更容易记住该数字。

就上面提到的 floatdouble float 的“数据丢失”而言,绝对没有足够的精度; double 可以 工作,如果你很高兴你永远不需要超过 16 位数字(比 long 少几位)但你需要非常非常小心在任何地方将值从 double 转换回 string ,你得到了准确的值。许多格式转换会给你一个近似值,它可能精确到 10 位有效数字——但你需要一个精确的整数。基本上,对电话号码使用浮点数根本就是个坏主意。如果您 必须 使用固定宽度的数字类型,请使用 long ,但理想情况下,完全避免使用它。

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

想一想:电话号码真的是一个号码吗?用电话号码相加(或进行另一次算术运算)有意义吗?电话号码是代码,它们通常用数字表示,但这只是一个约定,也许在另一个国家/地区也使用字母(我刚刚意识到,国际电话号码怎么样?他们有一个 + 一开始,你要思考你要表现的事物的本质,然后,找到最合适的表现。

原文由 manolowar 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题