当前位置: 首页 > 面试题库 >

数字前导零的奇怪行为

阎京
2023-03-14
问题内容

我有一些带有一些整数的PHP代码,并且一切正常,除非我拥有080X作为整数。当我引用它们时,一切都很好。

示例编号:

2      //Works fine
08     //Doesn't work
012    //Doesn't work
"08"   //Works fine again
"012"  //Works fine again

谁能告诉我背后的原因?


问题答案:

如果您只写08和09(不带引号)或任何其他带有前导0的数字,则PHP认为您正在写一个八进制值,而08和09是无效的八进制数。

http://www.php.net/manual/zh/language.types.integer.php

句法

整数可以十进制(以10为底),十六进制(以16为底),八进制(以8为底)或二进制(以2为底)表示法指定,还可以在其后加上一个符号(-或+)。

自PHP 5.4.0起可用二进制整数文字。

要使用 八进制表示法 ,请在数字前加上 0 (零)。要使用 十六进制表示法,请 在数字前加 0x 。要使用
二进制表示法,请 在数字前加 0b

[…]

警告: 在PHP 7之前,如果在八进制整数(即8或9)中给出了无效数字,则其余数字将被忽略。从PHP 7开始,发出解析错误。



 类似资料:
  • 问题内容: 我了解由于数值误差(例如,以不同顺序对浮点求和),在数学上等效的算术运算如何导致不同的结果。 但是,令我惊讶的是,将零加到可以更改结果。我认为无论哪种情况,这对于浮动广告始终有效。 这是一个例子。我希望所有行都完全为零。有人可以解释为什么会这样吗? 和的较小值似乎不会发生Z。 我也确定。 这是另一个示例,它还演示了python的内置行为符合预期: 我正在使用numpy V1.9.2。

  • 问题内容: 尝试这个: 因为什么时候40 = 32? 问题答案: 带有前导零的数字将解释为八进制和。

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 问题内容: 我有一些奇怪的字符串池行为的问题。我正在使用比较相等的字符串来找出它们是否在池中。 输出为: 这对我来说是一个很大的惊喜。有人可以解释一下吗?我认为这是在编译时发生的。但是,为什么添加到String 根本没有任何区别呢? 问题答案: 是一个编译时常量,而 不是。因此,前者仅编译为字符串常量“ 555”,而后者则编译为实际的方法调用和串联,从而生成一个新的String实例。 另请参见JL

  • 问题内容: 鉴于: 如何为少于两位的所有数字显示前导零? 那是, 问题答案: 你可以使用: 印刷品:

  • 亲爱的SO朋友们! 我有一个奇怪的问题与MariaDB 5.5.60运行在linux上。 出于某种原因,我正在对差异列进行简单的操作,正如您所看到的,它是一个双倍的。 问题是: -917.3700000000001 当系统开始加减值时会发生这种情况。由于这些数字代表金钱,我们不能容忍任何随意的差别。 可能导致此问题的查询之一如下: 如您所见,该值正在更新为减去$xfer- 这甚至有点难以复制,因为