php将科学计数法转数字的实现方法:首先通过if语句判断指定的数值是否为科学计数法;然后提取科学计数法中有效的数据;接着正式处理该数据;最后调用“convert_scientific_number_to_normal”方法实现转换即可。
推荐:《PHP视频教程》
PHP将科学计数法转换为正常的数字
每天,都会遇到些稀奇古怪的BUG,然后有遇到一个数字变成科学计数法的问题。问题来源于当前输出的一个数字太大了,然后存不下了。比如
echo 14735037137891444444; echo 0.00000000000000000000000000001;
然后输出的结果为:
1.4735037137891E+19 1.0E-29
这种情况也算常见了,只是数字太大或太小导致的,然后数据库的存储字段直接是字符串,结果就出现了种种神奇的问题。
然后就在网上找了个同样神奇的函数,确实有效,但也满坑的。然后就自己写了个,逻辑有点复杂,但没涉及到数字运算,精度应该是有保证的。
<?php /** * 将科学计数法的数字转换为正常的数字 * 为了将数字处理完美一些,使用部分正则是可以接受的 * @author loveyu * @param string $number * @return string */ function convert_scientific_number_to_normal($number) { if(stripos($number, 'e') === false) { //判断是否为科学计数法 return $number; } if(!preg_match( "/^([\\d.]+)[eE]([\\d\\-\\+]+)$/", str_replace(array(" ", ","), "", trim($number)), $matches) ) { //提取科学计数法中有效的数据,无法处理则直接返回 return $number; } //对数字前后的0和点进行处理,防止数据干扰,实际上正确的科学计数法没有这个问题 $data = preg_replace(array("/^[0]+/"), "", rtrim($matches[1], "0.")); $length = (int)$matches[2]; if($data[0] == ".") { //由于最前面的0可能被替换掉了,这里是小数要将0补齐 $data = "0{$data}"; } //这里有一种特殊可能,无需处理 if($length == 0) { return $data; } //记住当前小数点的位置,用于判断左右移动 $dot_position = strpos($data, "."); if($dot_position === false) { $dot_position = strlen($data); } //正式数据处理中,是不需要点号的,最后输出时会添加上去 $data = str_replace(".", "", $data); if($length > 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
위 내용은 PHP에서 과학적 표기법을 숫자로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는