php将科学计数法转数字的实现方法:首先通过if语句判断指定的数值是否为科学计数法;然后提取科学计数法中有效的数据;接着正式处理该数据;最后调用“convert_scientific_number_to_normal”方法实现转换即可。

推荐:《PHP视频教程》
PHP将科学计数法转换为正常的数字
每天,都会遇到些稀奇古怪的BUG,然后有遇到一个数字变成科学计数法的问题。问题来源于当前输出的一个数字太大了,然后存不下了。比如
echo 14735037137891444444; echo 0.00000000000000000000000000001;
然后输出的结果为:
立即学习“PHP免费学习笔记(深入)”;
启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。
1.4735037137891E+19 1.0E-29
这种情况也算常见了,只是数字太大或太小导致的,然后数据库的存储字段直接是字符串,结果就出现了种种神奇的问题。
然后就在网上找了个同样神奇的函数,确实有效,但也满坑的。然后就自己写了个,逻辑有点复杂,但没涉及到数字运算,精度应该是有保证的。
0) {
//如果科学计数长度大于0
//获取要添加0的个数,并在数据后面补充
$repeat_length = $length - (strlen($data) - $dot_position);
if($repeat_length > 0) {
$data .= str_repeat('0', $repeat_length);
}
//小数点向后移n位
$dot_position += $length;
$data = ltrim(substr($data, 0, $dot_position), "0").".".substr($data, $dot_position);
} elseif($length < 0) {
//当前是一个负数
//获取要重复的0的个数
$repeat_length = abs($length) - $dot_position;
if($repeat_length > 0) {
//这里的值可能是小于0的数,由于小数点过长
$data = str_repeat('0', $repeat_length).$data;
}
$dot_position += $length;//此处length为负数,直接操作
if($dot_position < 1) {
//补充数据处理,如果当前位置小于0则表示无需处理,直接补小数点即可
$data = ".{$data}";
} else {
$data = substr($data, 0, $dot_position).".".substr($data, $dot_position);
}
}
if($data[0] == ".") {
//数据补0
$data = "0{$data}";
}
return trim($data, ".");
}简单的测试数据
1.12E8 ------------- 112000000 1.12E3 ------------- 1120 1.12E2 ------------- 112 1.12E0 ------------- 1.12 1.12E-1 ------------ 0.112 1.12E-2 ------------ 0.0112 1.12E-8 ------------ 0.0000000112 0.112E1 ------------ 1.12 0.112E2 ------------ 11.2 0.112E4 ------------ 1120 0.112E-2 ----------- 0.00112 0000.112E-2 -------- 0.00112 0000.112000E-2 ----- 0.00112 .112E-2 ------------ 0.00112 .112E2 ------------- 11.2










