PHP如何将数字指数数转换为字符串?

问题描述 投票:0回答:3

我有一个以科学计数法存储的数字

2.01421700079E+14

我尝试过使用 float、string、int,但无法得到

0201421700079085 来自 2.01421700079E+14

1. echo (float)$awb;
2. echo number_format($awb, 0, '', '');
3. echo (int)$awb;
4. echo (string)$awb;
  1. 2.01421700079E+14 = 浮动
  2. 201421700079085 = 数字
  3. 201421700079085 = int
  4. 2.01421700079E+14 = 字符串
php string floating-point number-formatting exponential
3个回答
7
投票

printf
朋友们会这样做:

<?php
$awb = 2.01421700079E+14;
$str = sprintf("%d", $awb);
var_dump($str);

输出:

string(15) "201421700079000"

您的原始数字中显然没有足够的信息来获得比这更高的精度。


2
投票

试试这个:

number_format(1.2378147769392E+14,0,'','')

0
投票

我在 Stack Overflow 上尝试了几个对此问题评价很高的答案,但当数字大到足以失去精度时,它们都不能很好地工作。

我需要将大于20位的int数字转换为字符串类型,并且该数字来自于某些json中通过json_decode解析的数组,并且我不希望它是科学记数法,因为我想将其存储在mysql的bigint 无符号字段类型!

我找到了解决这个问题的方法。 在我的示例中,添加 JSON_BIGINT_AS_STRING 会将数字转换为字符串,以便我以字符串格式获取它。

$Data = json_decode($Data, true, 512,JSON_BIGINT_AS_STRING)

如果您仍然想用这些 bigINT 数字进行数学运算并获取仍为字符串格式的数据,您可以使用 php 的 GMP 或 BCMath 扩展来进行数学运算。

请注意,我的答案仅适用于解决大于 19 位的 Int 类型字符串

© www.soinside.com 2019 - 2024. All rights reserved.