前言:在写API接口的时候,小游戏前端传过来的数据是科学计数法字符格式的,如1.2345678987654321e+30,此时后台处理得到数据需要进行比较排序。

1.强制性的用字段为varchar类型进行比较排序

'CAST(`cashnum_week` AS UNSIGNED)
$list = $wx_user->field('id,user_name,head_img,cashnum_week')->where(['status'=>1])->order('CAST(`cashnum_week` AS UNSIGNED) DESC')->select();

直接将字段cashnum_week 转变为无符号化,此时再来进行排序

2.科学计数格式转化为字符串

将一个科学计数格式的数:1.2345678987654321e+30 转化为字符串‘123456789876543210000000000000’

首先将变量进行拆分在重组得到结果

实现原理:(1)将1.2345678987654321e+30拆分为1.2345678987654321和+30

(2)在用1.2345678987654321乘以10的30次方,10的30次方用php函数pow(10,30)来得出。

a.第一种方法,从最普通的想法来

public function sctonum($num){if(false !== stripos($num, "e")){$a = explode("e",strtolower($num));$b = $a[0] * pow(10,$a[1]);return $b;}else{return $num;}
}

b.用循环来得出


public function numToStr($num)
{$result = "";if (stripos($num, 'e') === false) {return $num;}while ($num > 0) {$v = $num - floor($num / 10) * 10;$num = floor($num / 10);$result = $v . $result;}return $result;
}

c.全部用php函数来得出

public function sctonum($num, $double = 5){if(false !== stripos($num, "e")){$a = explode("e",strtolower($num));return bcmul($a[0], bcpow(10, $a[1], $double), $double);}else{return $num;}
}
//注$double 是小数位数,可默认设置为没有

总结及建议:一万个人眼里一万个哈利波特!每个结果可以由不同的过程来实现,首先用你自己最顺手的,然后再来优化,其次借鉴能理解又高效规范的方法,比如c,简洁高效。

PHP把科学计数格式转化为数字字符串,PHP用字段varchar类型进行比较排序相关推荐

  1. JavaScript中科学计数法转化为数值字符串形式

    原文地址:https://www.css88.com/archives/9318 (受益匪浅) JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug.今天来说说一个 ...

  2. android string数字字符串如何使用科学计数法,JSONObject 偶遇 数字字符串变为科学计数法 如何变为普通数字字符串...

    和 XML 一样,JSON 也是基于纯文本的数据格式.由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Nu ...

  3. java导出excel 科学计数法_基于Java将Excel科学计数法解析成数字

    需要注意的是一般的科学表达式是 1.8E12 1.8E-12 而在Excel中的科学表达式是 1.8E+12 1.8E-12 我写的科学计数法的正则表达式是 (-?\d+\.?\d*)[Ee]{1}[ ...

  4. PHP科学计数法转换成数字

    /** * 科学计数法转换成数字 * @param $num * @param int $double * @return int */ function sctonum($num, $double ...

  5. [js] 写一个方法把科学计数法转换成数字或者字符串

    [js] 写一个方法把科学计数法转换成数字或者字符串 function c(a) { return a.replace(/^(\d+)(?:.(\d+))*eE(\d+)/,(_,a,a1,p,n)= ...

  6. 字符串转为小数点,乘以一个数以后,转换为科学计数法,再把科学计数法转化为字符串

    #include <stdio.h> #include <stdint.h> #include<string.h> #include<stdlib.h> ...

  7. sql科学计数法转换为普通数字_Python3数据类型之数字-Python入门到精通

    前言 更多内容,请访问我的 个人博客. https://www.zhihu.com/video/1166836508144422912 Python3 支持四种不同的数值类型: 整型(int) 整型也 ...

  8. 科学计数法转换为普通数字

    题目描述: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部 ...

  9. 科学计数法转换成数字

    科学计数法,转化成数字 一,方法 String num="2.036E5"; if(num.indexOf("E")>0)                 ...

最新文章

  1. 巧用shell+rsync服务实现日志自动过滤处理压缩并上传日志服务器,自动分类
  2. Excel读取某一列的宏代码VBA代码源码及解说(详尽版)
  3. 百分点零售行业大数据解决方案
  4. 在 Windows 上安装 TensorFlow(转载)
  5. 海森堡不确定性原理实验
  6. AndroidStudio:Path is not a readable directory.
  7. [经验] 【安富莱——DSP教程】第7章 DSP定点数和浮点数(重要)
  8. android实训总结ppt模板,ppt制作实训心得.docx
  9. C#学习笔记:什么是哈希值
  10. YYH的积木(NOIP模拟赛Round 6)
  11. (日常)Dell R740 XD 服务器安装GPU显卡记录
  12. ibmt60升级linux,【原创】老兵不死,T60最强升级记
  13. 经常“上火”者的食疗方
  14. 升级JDK版本注意事项
  15. 如何生成Patch及打patch
  16. 个人博客开源系统XBlog介绍和部署
  17. vue商城第13 订单确认模块 14订单成功页面
  18. 知识图谱入门学习笔记(二)-知识表示
  19. 计算机专业课app,‎App Store 上的“计算器-新版计算机”
  20. 基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置

热门文章

  1. 面向开发人员的 ChatGPT 提示词教程中文版 - ChatGPT 版
  2. 顺时针是往左还是往右?
  3. word域操作及操作页码实例
  4. 美股三连跌,蔚来汽车与趣头条周三暴跌约20%
  5. 《跟着小吴哥学python》之 12 Python发送邮件
  6. WinHex 15.8 r4 注册信息
  7. 视频会议软件和设备怎么选?显示终端_拾音
  8. GBASE 8s中 onunloadonload
  9. gb g t计算机单位,t和g的换算(硬盘容量G跟T的换算)
  10. 人脸门禁 刷卡模块 支持ISO14443A协议 手机NFC读取响应