php json_encode 函数造成浮点类型数据出现精度问题

在php 7.1.* 版本,在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题。
在php 5.6.*上不会放生

$data = [
    ‘a‘ => ‘100‘,
    ‘b‘ => 10,
    ‘c‘ => 0.1
];

echo json_encode($data);

输出:

{
"a":"100",
"b":10,
"c":0.10000000000000001
}

建议:就是将 float 转为 string 类型。

by:LiYY

原文地址:https://www.cnblogs.com/widgetbox/p/12247353.html

时间: 2024-10-04 00:31:50

php json_encode 函数造成浮点类型数据出现精度问题的相关文章

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围. <climits>该头文件包含了系统的整数长度的限制,它已取代了头文件<limits.h> <cfloat> 该头文件包含了系统的浮点数的长度限制,它以取代了头文件<float.h> <cfloat> 头文件各字符常量的取值和含义 上图中在程序中

QSort函数对不同类型数据快速排序浅谈

一.对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;} qsort(num,100,sizeof(num[0]),cmp); 二.对char类型数组排序(同int类型) char word[100]; int cmp( const void *a , const void *b ){return *(char *)a - *(int *)b;} qsor

Sql Server Convert函数转换Datetime类型数据

0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) 1 02/22/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1) 2 06.02.22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2) 3 22/02/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3) 4 22.02.06 CONVERT(CHAR(8), CURRENT_TIM

hbase中double类型数据做累加

public static Result incr(String tableFullName, String rowKey, String family, String qualifier, long amount) throws IOException { Table table = HBaseConnectionFactory.getConnection().getTable(TableName.valueOf(tableFullName)); Increment increment = n

以对象function本身函数不同的创建 car 的类型数据来重复或许做更换(开发)

创建Car的数据类型程序 // function car () { } // 创建的共享方法 car . prototype. shift = function () { alert ( this . color +" 汽车 " ) : } 选择格式在C++ 代码中比较常见,格式可类似更新下面如: //创建car 类型 function car () { if (car . prototype shift ) { // if 语句内只可以执行一次 car . prototype.shi

PHP的json_encode()函数与JSON对象

一.问题描述 这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上. 先写个 demo 还原下场景:选中一个下拉框列表选项后,会在下拉框下面展示文字. 这是下拉框的html部分: <html> <head> <title>JSON DEMO</title> <meta charset="UTF-8"> </head> <body> &

mysql存取blob类型数据

参考网址:http://www.cnblogs.com/jway1101/p/5815658.html 首先是建表语句,需要实现将表建立好. CREATE TABLE `blobtest` ( `primary_id` varchar(32) NOT NULL, `bank_id` varchar(32) NOT NULL, `bank_name` varchar(64) NOT NULL, `blob_data` blob NOT NULL, PRIMARY KEY (`primary_id`

UNIX高级环境编程(3)Files And Directories - stat函数,文件类型,和各种ID

在前面的两篇,我们了解了IO操作的一些基本操作函数,包括open.read和write. 在本篇我们来学习一下文件系统的其他特性和一个文件的属性,涉及的函数功能包括: 查看文件的所有属性: 改变文件所有者: 改变文件权限: 操作文件夹. 我们还会了解一些文件系统相关的数据结构和符号链接(symbolic link). 1 函数stat.fstat.fstatat.lsat函数 #include <sys/stat.h> int stat(const char *restrict pathnam

MySQL数据类型--------浮点类型实战

1. 背景 * MySQL支持的浮点类型中有单精度类型(float), 双精度类型(double),和高精度类型(decimal),在数字货币类型中推荐使用高精度类型(decimal)来进行应用. * MySQL浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001.FLOAT和DOUBLE在不指