V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lyp111332
V2EX  ›  PHP

php 接收客户端传来的值,如何防止被转化为科学计数法

  •  
  •   lyp111332 · 2016-05-09 09:26:13 +08:00 · 6116 次点击
    这是一个创建于 3118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用函数$nnn=number_format($clientID,'','',''); 将科学计数法转化回来,但是转化的结果却和发送的数据不相同了,请问下当数字非常大时,如何才能防止转换为科学计数法。
    16 条回复    2016-07-24 18:14:34 +08:00
    somnus
        1
    somnus  
       2016-05-09 09:29:21 +08:00
    用字符串
    lyp111332
        2
    lyp111332  
    OP
       2016-05-09 09:30:56 +08:00   ❤️ 1
    @somnus 如何使用呢, 请指教 我是这样
    $c = file_get_contents("php://input");
    $de_json = json_decode($c,true);
    $clientID=$de_json["clientID"];
    接收整个客户端传来的值, 然后解析出来就直接变成科学计数法。
    gdtv
        3
    gdtv  
       2016-05-09 09:33:39 +08:00 via Android
    $clientID = (string)$_POST["clientID"];
    GTim
        4
    GTim  
       2016-05-09 09:39:10 +08:00
    客户端传过来的本来就是字符串
    lyp111332
        5
    lyp111332  
    OP
       2016-05-09 09:42:42 +08:00
    @gdtv 返回的数据还是科学计数法
    lyp111332
        6
    lyp111332  
    OP
       2016-05-09 09:45:39 +08:00
    @GTim 可是接收过来,一打印出来就是科学计数发啊
    GTim
        7
    GTim  
       2016-05-09 09:50:16 +08:00   ❤️ 1
    我去,客户端传过来的是 json. 我忘记看了,那只有 2 个办法了,一是让客户端改 二是改原串$c 加上双引号
    ango
        8
    ango  
       2016-05-09 09:51:48 +08:00
    客户端传过来全是字符串的 json 结构,或者服务端格式化一下。
    lyp111332
        9
    lyp111332  
    OP
       2016-05-09 10:03:43 +08:00
    @GTim = =再问个简单的问题, 请问下如何引用其他页面的函数,而不运行其他文件,只是引用下函数,。
    zi
        10
    zi  
       2016-05-09 10:17:34 +08:00
    php.ini 中设置 precision = ,(The number of significant digits displayed in floating point numbers.)
    整数超过 precision 位会转化为 precision 位的科学计数法,浮点数超过 precision 位小数部分会被截断
    或者用 sprintf
    flymemory
        11
    flymemory  
       2016-05-09 12:40:52 +08:00
    @lyp111332 建一个 class ,再里面建一个 static function ,然后丢到 autoload 里~
    raincious
        12
    raincious  
       2016-05-09 12:48:07 +08:00
    @lyp111332

    > 请问下如何引用其他页面的函数,而不运行其他文件,只是引用下函数,。

    将那个函数提取出来,然后放在一个单独的文件里。

    比如函数原本在 A.php 里,需要在 B.php 里引用。

    这时候建立一个 C.php 文件,然后将函数移动到 C.php 中。

    A.php 和 B.php 加上 require("C.php"),这样 A 和 B 就都能使用 /引用那个函数。

    但是这样做并不好,建议尝试用更高级封装。比如封装成 Tool Class 然后用 Autoloader ,不过这样我猜测改量会很大。
    jhdxr
        13
    jhdxr  
       2016-05-09 13:07:33 +08:00
    @lyp111332 1. 提问的时候你没说清楚客户端传的是 json ,你自己做了一步 decode (这很重要); 2. RTFM
    http://php.net/manual/en/function.json-decode.php
    jhdxr
        14
    jhdxr  
       2016-05-09 13:08:19 +08:00   ❤️ 1
    @GTim 不需要, PHP 的 json_decode 支持大数直接转为 string 的,有 option 的
    GTim
        15
    GTim  
       2016-05-09 16:09:16 +08:00
    @jhdxr 还真是
    mingyun
        16
    mingyun  
       2016-07-24 18:14:34 +08:00
    @jhdxr 果然有 json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:21 · PVG 05:21 · LAX 13:21 · JFK 16:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.