我在我的一个应用程序中表示手机号码时遇到问题。
我想知道是否有一个 Integer 类可以让你存储这样一个以 0417254482 开头的数字。也许使用字符串更合适?目前,当我尝试使用整数表示电话号码时,我似乎存储了随机数而不是我打算存储的数字。
原文由 user420344 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在我的一个应用程序中表示手机号码时遇到问题。
我想知道是否有一个 Integer 类可以让你存储这样一个以 0417254482 开头的数字。也许使用字符串更合适?目前,当我尝试使用整数表示电话号码时,我似乎存储了随机数而不是我打算存储的数字。
原文由 user420344 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
使用
String
。除此之外,如果您使用整数,您将无法存储前导零。您 绝对 不应该使用int
(太小)float
或double
(数据丢失风险太大);long
或BigInteger
可能是合适的(除了前导零问题),但坦率地说我会选择String
这样,如果您愿意,您 还可以 存储用户输入的任何破折号或空格,以便更容易记住该数字。就上面提到的
float
和double
float
的“数据丢失”而言,绝对没有足够的精度;double
可以 工作,如果你很高兴你永远不需要超过 16 位数字(比long
少几位)但你需要非常非常小心在任何地方将值从double
转换回string
,你得到了准确的值。许多格式转换会给你一个近似值,它可能精确到 10 位有效数字——但你需要一个精确的整数。基本上,对电话号码使用浮点数根本就是个坏主意。如果您 必须 使用固定宽度的数字类型,请使用long
,但理想情况下,完全避免使用它。