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

不带科学计数法显示浮点值

东门宜
2023-03-14
问题内容

当我在PHP中进行以下乘法时:

$ret = 1.0 * 0.000000001;

我得到结果:1.0E-9

我想将此结果转换为普通的十进制表示法,我该怎么做?

sprintf('%f',$ret)不起作用,它返回0.000000。溢出?


问题答案:

sprintf('%f',$ret)不起作用,它返回0.000000。溢出?

sprintf 可以,但是您在这里错过了一点。

0.000000没有溢出。只是sprintf对于%f修饰符,默认情况下使用6位数字。另外,请注意%f区域设置,%F可能更适合。

您可能希望使用更多数字,例如说4000000(400万):

$ php -r "printf('%.4000000F', 1*0.000000001);"

Notice: printf(): Requested precision of 4000000 digits was truncated to PHP maximum of 53 digits in Command line code on line 1

Call Stack:
    0.0001     319080   1. {main}() Command line code:0
    0.0001     319200   2. printf() Command line code:1

0.00000000100000000000000006228159145777985641889706869

如该示例所示,不仅有一个公共值(6位数字),而且还有一个最大值(可能取决于PHP所执行的计算机系统),在本例中,如警告所示,这里被截断为53位数字。

由于您的问题,我想说您要显示:

0.000000001

这是九位数字,因此您需要这样写:

sprintf('%.9F',$ret)

但是,您可能要这样做:

rtrim(sprintf('%.20F', $ret), '0');

它将从右边删除零:

0.000000001

希望这会有所帮助。



 类似资料:
  • 问题内容: 遇到一个问题,我的JSON数据以科学计数法而不是浮点数打印。 打印以下值;。我需要它是一个浮点数,小数点后有8个字符(0.00001370) 如您在此处看到的-> http://i.imgur.com/FCVM1UN.jpg,我的GUI显示正确的第一行(使用完全相同的代码)。 问题答案: 您正在查看浮点数的 默认格式,其中科学计数法用于足够小的数字或大的数字。 您无需进行转换,该 值本

  • 问题内容: 我该如何显示: 十进制(‘40800000000.00000000000000’)为‘4.08E + 10’? 我已经试过了: 但是它有那些额外的0。 问题答案: 在您的“ 40800000000.00000000000000”中,有许多更重要的零,其含义与任何其他数字相同。这就是为什么您必须明确告诉您要在哪里停止的原因。 如果要自动删除所有尾随零,可以尝试:

  • 问题内容: 我有一个以指数形式输出的数字: 如何使它以普通格式打印? 问题答案: 您可以将其格式化为定点数字。

  • 问题内容: 所以这很好用: 但是当处理更大的数字时,它不会打印: 有办法强制吗?也许使用numpy之类的东西。 问题答案: print ‘{0:.10f}’.format(1.0e-9) 文档中的字符串格式。

  • 问题内容: 我有一个使用浮点参数的函数(通常是整数或具有一位有效数字的十进制数),我需要将输出的值输出到具有两位小数的字符串中(5-> 5.00、5.5-> 5.50等)。如何在Python中执行此操作? 问题答案: 由于这篇文章可能会在这里出现一段时间,因此我们还要指出python 3语法:

  • 问题内容: 如果我们运行以下代码: 它打印: 文字1.2345678990922222中的长尾将被忽略,但1.22222222222222222222中的长尾不会被忽略(变量d中的最后一个十进制数字变为3而不是2)。为什么? 问题答案: 打印a 或a 时看到的位数是Java的默认规则(从和转换为十进制)的结果。 Java的浮点数默认格式使用最少的有效十进制数字来将数字与附近的可表示数字区分开。1个