TL; DR:

PHP本机函数bcdiv似乎恰好可以正确地执行所需的操作。

要简单地“截断”一个数字,bcdiv($var, 1, 2);其中2是要保留的小数位数(1是分母-将数字除以1可让您简单地将原始数字截断为所需的小数位)

完整答案(历史记录)

事实证明,这比人们想象的要难得多。

在这个答案被(错误地)提高了很多之后,我注意到甚至sprintf都会四舍五入。

与其删除此答案,不如将其变成对每个提出的解决方案的更可靠的解释/讨论。

number_format-不正确。 (回合)

尝试使用数字格式:

$var = number_format($var, 2, '.', ''); // Last two parameters are optional

echo $var;

// Outputs 2.50

如果您希望它是一个数字,则只需将其强制转换为浮点数即可:

$var = (float)number_format($var, 2, '.', '');

注意:正如评论中指出的那样,实际上这是对数字的舍入。

sprintf-错误。 (sprintf也四舍五入)

如果不舍入该数字很重要,则根据以下答案,使用sprintf:

$var = sprintf("%01.2f", $var);

地板-不完全! (底数为负数)

一些数学知识,就可以轻松完成您想要的工作:

floor(2.56789 * 100) / 100; // 2.56

其中100代表您想要的精度。 如果要三位数,则:

floor(2.56789 * 1000) / 1000; // 2.567

但是,这有一个负数的问题。 负数仍会四舍五入,而不是被截断:

floor(-2.56789 * 100) / 100; // -2.57

“老”正确答案:利用地板的功能

因此,一个完全健壮的解决方案需要一个功能:

function truncate_number( $number, $precision = 2) {

// Zero causes issues, and no need to truncate

if ( 0 == (int)$number ) {

return $number;

}

// Are we negative?

$negative = $number / abs($number);

// Cast the number to a positive to solve rounding

$number = abs($number);

// Calculate precision number for dividing / multiplying

$precision = pow(10, $precision);

// Run the math, re-applying the negative value to ensure returns correctly negative / positive

return floor( $number * $precision ) / $precision * $negative;

}

以上功能的结果:

echo truncate_number(2.56789, 1); // 2.5

echo truncate_number(2.56789); // 2.56

echo truncate_number(2.56789, 3); // 2.567

echo truncate_number(-2.56789, 1); // -2.5

echo truncate_number(-2.56789); // -2.56

echo truncate_number(-2.56789, 3); // -2.567

新正确答案

使用PHP本机功能bcdiv

echo bcdiv(2.56789, 1, 1); // 2.5

echo bcdiv(2.56789, 1, 2); // 2.56

echo bcdiv(2.56789, 1, 3); // 2.567

echo bcdiv(-2.56789, 1, 1); // -2.5

echo bcdiv(-2.56789, 1, 2); // -2.56

echo bcdiv(-2.56789, 1, 3); // -2.567

php 去除小数点后,php-删除两位小数点后的数字,而不舍入该值相关推荐

  1. 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。

    生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题.`` public class Demo02 {public static void main(String[] args) ...

  2. JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数

    第一: 限制只能是整数 ? 1 <input type = "text" name= "number" id = 'number' onkeyup= &q ...

  3. javascript 【小数转百分数 保留两位小数】

    项目中遇到小数(一个人脸的相似度值,业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数. 直接上代码. var nval = 0.12345; var percent = (Math ...

  4. html计算保留两位小数,5.298保留两位小数

    5.982保留一位小数约是(),保留整数约是(). 5.982保留一位小数约是(6.0): 保留整数约是(6): 百分位是8: 进位: 5.9+0.1 =6.0 3.298保留两位小数是什么答案3.2 ...

  5. jq设置保留两位小数_javascript实现保留两位小数的多种方法

    第一种方法:javascript实现保留两位小数一位自动补零代码实例:第一种方法介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先 ...

  6. java保留两位小数怎么_java保留两位小数4种方法

    java保留两位小数4种方法 Java中保留小数有四种方法,如下: public class Format { double f = 23065.57845; public void m1() { B ...

  7. jquery保留两位小数方法,字符串保留两位小数

    1. 简单的方法 四舍五入 var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入 Math.floor(15.77845140 ...

  8. html保留两位小数php,JS保留两位小数输入数校验代码

    这次给大家带来JS保留两位小数输入数校验代码,JS保留两位小数输入数校验的注意事项有哪些,下面就是实战案例,一起来看一下. 输入input 的格式校验:$(function(){ var data = ...

  9. python怎么保留两位小数_python中保留两位小数怎么表示

    这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').quantize(Decimal('0.00')) 当需要输出的结果要求有两位小数的时候,字符串形式的: ...

  10. php数字两位小数_PHP实现保留两位小数

    我们在php开发的时候经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中 ...

最新文章

  1. java中数组的含义_数组
  2. Android应用内多进程分析和研究
  3. 负载均衡集群ipvsadm命令及基本用法
  4. python实时得到鼠标的位置
  5. jQuery(三):样式操作
  6. 从用户观点对计算机如何分类,从用户的观点看操作系统是
  7. linux用户密码转换为明文,Linux运维知识之linux下抓取内存中明文密码mimipenguin
  8. JavaScript学习随记——错误类型
  9. C++中virtual关键字的用法
  10. Cache工作原理,Cache一致性,你想知道的都在这里
  11. httpclient4.x 中文版帮助文档,最新官方版翻译版(第一章 下)
  12. Quartus 13.1和 Modelsim 安装
  13. 10款非常棒的开源论坛系统推荐
  14. 基于ArcGIS模型构建器工具的土地利用现状重分类流程及常见问题
  15. Mac电脑无线键盘失灵的解决方法
  16. java合并果子_经典题-提高组2004年 合并果子
  17. netty--关于NIO和OIO
  18. itextsharp 获取文本_使用itextsharp从签名图像中获取Layer2文本(签名描述)
  19. 已解决Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
  20. php srt,常见字幕文件格式(lrc、srt、ass)的区别以及互相转换的方法

热门文章

  1. 常用函数式接口-Function
  2. List、Map、Set 三个接口,存取元素时的特点
  3. 北邮计算机机试的编译器,北邮2018计算机院考研复试机试上机题解+结果统计
  4. 线程池很难么?带你从头到尾捋一遍,不信你听不懂!
  5. 后端接口都测试什么?怎么测?
  6. 注意,Dubbo 存在高危反序列化漏洞!
  7. 什么时候出来的_DNF手游官网正版什么时候出来?地下城手游上线日期分享
  8. Linux 5.10将解决2038年问题
  9. 【CSS】css控制模块到顶层或底层
  10. 算法总结之 一行代码求两个数的最大公约数