电话号码格式,在国家/地区代码后加点

Phone number formatting with a dot after the country code

提问人:tpimh 提问时间:9/27/2023 更新时间:9/27/2023 访问量:54

问:

我的域名注册商要求提供以下格式的电话号码:(其中是国家代码,是区号,其余是本地电话号码)。+358.40123456735840

就我个人而言,这种格式是陌生的,除了WHOIS域名信息之外,我找不到它在任何地方使用。我试图找到对此特定格式规范的任何引用,但没有成功。也许这种格式是ICANN要求的,但我找不到任何证据。这个电话号码符号是标准化的吗?

最令人担忧的是,从注册商的 REST API 获取此信息时,该值将作为浮点数返回,如下所示: .在将值存储为浮点数而不是字符串时,这是否会导致舍入错误?{ "phone": 358.401234567 }

浮点 电话号码 舍入错误

评论

0赞 Eric Postpischil 9/27/2023
Re “像这样以浮点数的形式返回: ”: 不是 “float”。它是一串字符。如果解释为数字,则它是定点表示,而不是浮点表示,因为它在第三位数字之后的固定位置具有点。浮点表示由有效数和指数组成,其中指数告诉您点的位置。不要用“float”来表示“非整数”;那不是这个意思。电话号码通常根本不应该被解释为数字。{ "phone": 358.401234567 }358.401234567.
0赞 tpimh 9/27/2023
是的,我的错。我不确定内部注册商的数据库使用什么数据类型,只是假设它是基于其 API 返回的 JSON 的浮点值。
1赞 Sam Mason 9/28/2023
@EricPostpischil假设您知道这一点,但是一些重要的JSON解析器(例如JavaScript的)没有提供控制数值解码为的数据类型的方法。也就是说,这些值几乎肯定会以 binary64 浮点数IEEE754除非在它们周围加上引号。JSON.parse
0赞 chux - Reinstate Monica 9/28/2023
@tpimh “当将值存储为浮点数而不是字符串时,这是否会导致舍入错误?” --> 是的。请勿将浮点用于此任务。
0赞 tpimh 9/28/2023
@chux-ReinstateMonica 我实际上找不到任何会导致舍入错误的数字,但是尾随零被证明是一个问题。我正在向我的服务提供商报告此事。如果您有任何关于电话号码可能四舍五入错误的建议(我想,它应该很长),我可以测试它。

答:

1赞 vinc17 9/27/2023 #1

您应该使用字符串,而不是电话号码的数值。

如果在任何情况下都需要一个数值,假设机器内部使用 binary64 格式(双精度),那么,如果 d ⩽ 15,则可以将 d 位十进制数转换为 binary64,如果将 binary64 数转换回 d 位十进制数,您将检索原始值。这是因为 1+d·log(10)/log(2) ⩽ 53(其中 53 是 binary64 的精度)。如果电话号码的位数是可变的,请注意尾随零。

评论

0赞 tpimh 9/27/2023
非常感谢您的回答!我一定会用一个尾随零的电话号码进行检查。