c# - PHP 中的意外行为 - 相同的代码在 C# 和 Python 中给出正确的结果

标签 c# php python math

为什么 PHP 会为以下代码返回 INF(无穷大):

<?php
$n = 1234;
$m = 0;

while ($n > 0)
{
    $m = ($m * 10) + ($n % 10);
    $n = $n / 10;
}

var_dump($m);
?>

预期的结果是4321,但是PHP返回了INF,float类型:

float INF

我用 Python 和 C# 编写了相同的代码并获得了预期的输出 - 4321

python

n = 1234
m = 0

while (n > 0):
    m = (m * 10) + (n % 10)
    n = n / 10

print m

C#

static void Main(string[] args)
{
    int n = 1234;
    int m = 0;

    while (n > 0)
    {
        m = (m * 10) + (n % 10);
        n = n / 10;
    }

    Console.WriteLine(m);
    Console.ReadLine();
}

最佳答案

在 php 中,$n/10 将返回一个 float ,而不是整数。

因此 $n > 0 将始终为 true

改变 while($n > 0)

while($n > 1)while((int)$n > 0),那么你会得到正确的结果。

关于c# - PHP 中的意外行为 - 相同的代码在 C# 和 Python 中给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297872/

相关文章:

c# - 如何将 GET 函数传递到 View/ViewModel?如何将数据绑定(bind)到 View (仅使用 C# 代码)?

php - UPDATE 和 INSERT 语法差异带来不便

php - 禁用品牌/ channel 信息 TwitchTV

python - Python 2.6 中的可迭代枚举

python - 将所有内容从 argparse 重定向到套接字连接,但通常不重定向到 stdout

python - 打开CV轮廓-将凹面多边形分成多个凸面多边形

C# 从远程系统拖放

c# - 16 位数字的基本正则表达式

php - 如何显示 3 个 mysql 表的值

c# - 仅使用 'x' 前缀引起的神秘 404 路由错误?