php 去除小数点后,php-删除两位小数点后的数字,而不舍入该值
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-删除两位小数点后的数字,而不舍入该值相关推荐
- 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题.`` public class Demo02 {public static void main(String[] args) ...
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数
第一: 限制只能是整数 ? 1 <input type = "text" name= "number" id = 'number' onkeyup= &q ...
- javascript 【小数转百分数 保留两位小数】
项目中遇到小数(一个人脸的相似度值,业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数. 直接上代码. var nval = 0.12345; var percent = (Math ...
- html计算保留两位小数,5.298保留两位小数
5.982保留一位小数约是(),保留整数约是(). 5.982保留一位小数约是(6.0): 保留整数约是(6): 百分位是8: 进位: 5.9+0.1 =6.0 3.298保留两位小数是什么答案3.2 ...
- jq设置保留两位小数_javascript实现保留两位小数的多种方法
第一种方法:javascript实现保留两位小数一位自动补零代码实例:第一种方法介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先 ...
- java保留两位小数怎么_java保留两位小数4种方法
java保留两位小数4种方法 Java中保留小数有四种方法,如下: public class Format { double f = 23065.57845; public void m1() { B ...
- jquery保留两位小数方法,字符串保留两位小数
1. 简单的方法 四舍五入 var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入 Math.floor(15.77845140 ...
- html保留两位小数php,JS保留两位小数输入数校验代码
这次给大家带来JS保留两位小数输入数校验代码,JS保留两位小数输入数校验的注意事项有哪些,下面就是实战案例,一起来看一下. 输入input 的格式校验:$(function(){ var data = ...
- python怎么保留两位小数_python中保留两位小数怎么表示
这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').quantize(Decimal('0.00')) 当需要输出的结果要求有两位小数的时候,字符串形式的: ...
- php数字两位小数_PHP实现保留两位小数
我们在php开发的时候经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中 ...
最新文章
- java中数组的含义_数组
- Android应用内多进程分析和研究
- 负载均衡集群ipvsadm命令及基本用法
- python实时得到鼠标的位置
- jQuery(三):样式操作
- 从用户观点对计算机如何分类,从用户的观点看操作系统是
- linux用户密码转换为明文,Linux运维知识之linux下抓取内存中明文密码mimipenguin
- JavaScript学习随记——错误类型
- C++中virtual关键字的用法
- Cache工作原理,Cache一致性,你想知道的都在这里
- httpclient4.x 中文版帮助文档,最新官方版翻译版(第一章 下)
- Quartus 13.1和 Modelsim 安装
- 10款非常棒的开源论坛系统推荐
- 基于ArcGIS模型构建器工具的土地利用现状重分类流程及常见问题
- Mac电脑无线键盘失灵的解决方法
- java合并果子_经典题-提高组2004年 合并果子
- netty--关于NIO和OIO
- itextsharp 获取文本_使用itextsharp从签名图像中获取Layer2文本(签名描述)
- 已解决Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
- php srt,常见字幕文件格式(lrc、srt、ass)的区别以及互相转换的方法