【问题标题】:Convert exponential number presented as string to a decimal将以字符串形式表示的指数数转换为小数
【发布时间】:2011-03-17 14:18:21
【问题描述】:

假设我有一个包含“7.2769482308e+01”的字符串(这个数字来自第三方软件,我无法控制格式)。

将其转换为十进制72.769482308 的最便宜的方法是什么?

我能想到的唯一解决方案是拆分小数 + 指数部分并使用乘法。但是可能有一些内置的功能来做同样的事情吗?

注意:伙计们,是的,我读过Convert exponential to a whole number in PHPConvert exponential number to decimal in php。这些问题是无关紧要的,因为它们已经有一个数字,但我有一个字符串

【问题讨论】:

    标签: php


    【解决方案1】:

    如何简单地转换为浮点值?

    $string = "7.2769482308e+01";
    $float  = (float) $string;
    

    【讨论】:

    【解决方案2】:

    我成功使用了number_format(1.2378147769392E+14, 0, '', ''),它最初由this question提供。

    当值是字符串时,这也有效,例如:number_format("1.2378147769392E+14", 0, '', '')。来吧,试一试。

    【讨论】:

    • 哎呀,苛刻的话......你试过这个吗?因为这在值是和不是字符串时都有效。
    • 有什么理由比一个短近两倍且可读性更强的解决方案更喜欢:(float) $string? PS:它们并不苛刻,在其初始版本中它不是一个答案 PPS:number_format 接受数字作为第一个参数,因此字符串正在被隐式转换 PPPS:结果是一个字符串,因此需要进行另一个转换执行以获得小数/浮点数
    • 不知何故 $float = (float) $string;比 $float = number_format($string, 0, '', '')..lol.. OP 的咖啡有点多,我觉得短两倍。顺便说一句,好答案!刚刚投了赞成票
    【解决方案3】:

    这是一个非常便宜的:$float = "7.2769482308e+01" + 0;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-20
      • 2022-01-23
      • 2011-10-07
      • 2021-02-20
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多