当使用 long 或 float 设置手机号码变量时,它说“错误:整数到大:07859664443”
这是代码
public class StudentNode
{
public long TelNumber;
public void setTelNumber(long aTelNumber)
{
TelNumber = aTelNumber;
}
}
long 不应该足够大以能够存储电话号码吗?
最佳答案
电话号码不是数字。它们是字符串。例如,在英国和许多其他欧洲国家,完整电话号码的第一位数字是 0。但是像 long
这样的简单数字类型无法表示前导 0 是有效的,数字 07859 664 443 将是值 7859664443
。前导零很重要。另外,看到这样写的数字并不少见:+44 (0)7859 664 443。将其放入您的 long
中并尝试抽烟。 :-)
此外,格式很重要。 07859 664 443 比 07859664443 更容易阅读和调用。在美国,他们经常将区号放在括号中:(800) 123-4567,这对我们这些可怜的人来说又比 8001234567 更容易打交道。
根据我的经验,处理电话号码的最佳方法是将它们存储为字符串,并且主要保留它们的输入方式,除非您想将应用程序限制在非常有限的地理范围内使用的电话号码区域——即便如此,事情也会发生变化。尝试在您的应用程序中构建格式规则会立即引入维护项目。例如,当(当)美国遇到其当前 (xxx) yyy-zzzz 格式的限制时,大量 应用程序将需要更新。痛苦的。同样,前几天我使用了一个应用程序,该应用程序假设所有英国号码都采用 (xxxxx) nnn nnn 的形式。这不再是事实,大都市地区现在是 (xxx) nnnn nnnn,而我们更多的农村类型仍在使用旧系统。在过去十年之初,伦敦的数字有一段时间采用 (xxxx) nnn nnnn 的形式。你明白了。
关于java - long 不应该足够大以能够存储电话号码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805409/