-
php intval 两位小数乘以100后结果少1
2019-02-15 09:37:42因为工作需要,价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数intval() 这下子结果就不对了。 可以看出原本结果应该是1633的...因为工作需要,价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数intval() 这下子结果就不对了。
可以看出原本结果应该是1633的,但是使用了函数intval() 之后结果居然变为了1632了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。
该函数的解决方法手册上也给出了,就是需要先使用strval() 函数将变量转成字符串类型。
还有就是直接使用类型转换也是不行的,如:(int)($pay_price*100) 结果也会损失精度的。 -
decimalformat精度丢失_php intval 两位小数乘以100后结果少1
2020-12-29 08:37:52ASP&... Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也 ...【转】NGUI创建UIRoot后报NullReferenceException的解决办法本文参考自http...ASP.NET Core开发-后台任务利器Hangfire使用
ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也 ...
【转】NGUI创建UIRoot后报NullReferenceException的解决办法
本文参考自 http://forum.china.unity3d.com/thread-1099-1-1.html 使用NGUI版本3.7.5. 在创建了一个UIRoot后,有时会报NullRefer ...
修改linux系统时间和同步
date 查看当前时间 date -s 15:14:13 修改时间 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改时区 yes cront ...
jQuery操作css样式
jQuery操作css样式 css操作的分类: css操作 位置操作 尺寸操作 css操作之css css代码: html代码: jQuery代码: 效果如下: css操作之位置操作 css代码: h ...
shell脚本编程基础
最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础 shell脚本是利用shell的功能 ...
【原创】源码角度分析Android的消息机制系列(二)——ThreadLocal的工作过程
ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一篇文章中,我们已经提到了ThreadLocal,它并非线程,而是在线程中存储数据用的.数据存储以后,只能在指定的线程中获取到数据,对于其 ...
第五篇:数据备份、pymysql模块
http://www.cnblogs.com/linhaifeng/articles/7525619.html#_label3 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们 ...
MYSQL数据库从A表把数据插入B表
如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: Code: INSERT INTO 目标表 SELECT * FROM 来源表; 比如要将 articles 表插入到 newArticl ...
51 nod 1205 流水线调度
51 nod 1205 流水线调度 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 N个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工.每 ...
python mac环境搭建
安装 virtualenv $ sudo pip install virtualenv 然后建立一个测试目录: $ mkdir testvirtual $ cd testvirtual 就可以成功创建 ...
-
php保留一位小数_php中的保留特定几位小数的写法
2020-12-24 13:28:24php中的保留特定几位小数的写法1.不进位的情况比如3.149569取小数点后两位,最后两位不...因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即:$a=floor(3.149569*100)/100这时浮点计算会出现一个bu...php中的保留特定几位小数的写法
1.不进位的情况
比如3.149569取小数点后两位,最后两位不能四舍五入。结果:3.14。
可以使用floor 函数
该函数是舍去取整。例如,floor(4.66456) 结果:4 。
floor(9.1254) 结果9 。
因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即:$a=floor(3.149569*100)/100
这时浮点计算会出现一个bug,通过PHP的无类型特性来解决这个问题,先strval转成字符串,再自动识别类型。下面计算百分比已经使用上strval()函数了
计算百分比$successRate = floor(strval((2/3)*10000))/10000*100;
$result = $successRate.'%';
2.四舍五入的情况
round函数 ,此保留位数,当为整数时,不会再后边加.00充填;直接返回整数float round ( float val [, int precision])
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。
precision 也可以是负数或零(默认值)。<?php
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2); // 5.04
echo round(5.055, 2); // 5.06
sprintf 函数 (推荐使用这个)
实现四舍五入,并且如果是不带小数位数的,会自动用指定的字符(指定的0)补至指定的小数位数echo sprintf("%01.2f", 5.228); // 5.23
echo sprintf("%01.2f", 5.224); // 5.22
echo sprintf("%01.2f", 5); // 5.00
number_format 函数
如果是不带小数位数的,会自动用0补至指定的小数位数echo number_format(5.228,2); // 5.23
echo number_format(5.224,2); // 5.22
echo number_format(5,2); // 5.00
round 函数
此函数可以实现四舍五入,但是如果是不带小数位数的,处理后也不带小数数位echo round(5.228,2); // 5.23
echo round(5.224,2); // 5.22
echo round(5,2); // 5
php进一法取整echo ceil(4.4); // 5
echo ceil(4.6); // 5
php舍去法取整echo floor(4.4); // 4
echo floor(4.6); // 4
-
【C语言】将一个浮点数四舍五入保留两位小数
2019-09-13 00:25:49【C语言】将一个浮点数四舍五入保留两位小数 第一次做这个题目的时候,我用了一个比较傻的方法:利用强制类型转换可以得到该浮点数的整数部分,然后分别取出十分位、百分位、千分位上的数字,判断千分位上的数字是否...【C语言】将一个浮点数四舍五入保留两位小数
第一次做这个题目的时候,我用了一个比较傻的方法:利用强制类型转换可以得到该浮点数的整数部分,然后分别取出十分位、百分位、千分位上的数字,判断千分位上的数字是否大于等于5,若是则百分位进一,再将这几个数字乘以系数后相加即可
关于如何获取某一位上数字的方法在另一篇博客中有详细说明获取正数或浮点数某一位上的数字
#include <stdio.h> int main(int argc, const char * argv[]) { double f = 123.4567; //获得整数部分 int a = (int)f; //获取十分位部分 int b = (int)(f*10)%10; //获取百分位部分 int c = (int)(f*100)%10; //获取千分位部分 int d = (int)(f*1000)%10; //判断千分位是否大于等于5 if (d >= 5) { //是,百分位进一位 c ++; } //乘以系数后相加 double e = a + b*0.1 + c*0.01; printf("a = %d\n",a); printf("b = %d\n",b); printf("c = %d\n",c); printf("d = %d\n",d); printf("e = %f\n",e); return 0; }
这个方法显然是很傻的(看见题目的时候脑子没转过弯来),下面介绍比较常用的方法
-
如何进行四舍五入
假设要从某一位进行四舍五入,很自然能想到判断它后一位上的数字是否大于等于5,其实可以直接给这个数字加上5,就能跳过判断的过程了
例如
100.1123 四舍五入保留整数: 100.1 + 0.5 = 100.61 取整后为100
100.7123 四舍五入保留整数: 100.7 + 0.5 = 101.21 取整后为101
但是,假如要进行小数位的四舍五入,光利用这个特性是不够的,例如
100.1123 四舍五入保留两位小数:100.1123 + 0.005 = 100.1173
100.1173 四舍五入保留两位小数:100.1173 + 0.005 = 100.1253
怎样将百分位后的数去掉呢?
-
如何处理小数位的四舍五入
可以利用强制转换为int型时,截断的特性来实现
例如
int a = 0.75 实际上 a 赋值为0,小数部分被截断了
利用这个特性,可以将要保留的数据挪到整数位,然后强制转换为int型,再转回所求的数字即可
#include <stdio.h> int main(int argc, const char * argv[]) { double f = 123.4567; //1.进行四舍五入 f = f + 0.005; //2.将要保留的数据挪到整数位,再取整 int temp = f*100; //一步到位 //int temp = (f+0.005)*100; //3.转为所需数字 f = temp/100.0; printf("f = %f\n",f); return 0; }
当然,也可以先转为int型再进行四舍五入,结果都是一样的
#include <stdio.h> int main(int argc, const char * argv[]) { double f = 123.4567; //取整的同时四舍五入 int temp = (int)(f*100+0.5); //转为所需数字 f = temp/100.0; printf("f = %f\n",f); return 0; }
注
由于float类型的有效数字为6~7位,可能存在六位以后的数据不正确的情况,所以为了保证精度,在需要较长的浮点数时最好使用double型
-
-
java数值保留2位小数_java中如何使Double类型的数值保留两位小数问题
2021-03-01 08:16:08一、其实很简单:Double dou = 3000.533dou = (double)Math.round(dou*100)/100其中dou是变量,很简单吧,我们大多数人都知道Math.round()方法,可是我却没想到保留两位小数就是先乘以100再除以100.同理保留N位小数... -
php保留一位小数_php保留小数点后两位的几种方法
2020-12-24 13:28:23这个是比较基础的东西了算是,虽说不难,但是希望能对一些人有帮助吧:1,经常用到小数点后取几位,但不能进位的情况。...因此,去小数点后两位,需要先乘以100,然后舍去取整,再除以100,即:$a=floo... -
hive值乘以0.01保留一位小数_北师大|五年级上册|第二周周测·小数除法!(可下载)...
2021-01-04 09:33:50北师大·五年级上册·第二周周测·小数除法(2)一、计算题1 直接写出得数。...10.9-0.9÷1.8 82.6÷4÷0.25 3.6÷0.4+1.25×53、竖式计算,除不尽的得数保留两位小数。5.12÷64 2.736÷0.76 26.35÷31 ... -
JS保留最多两位小数
2019-11-14 17:03:04Math.round(num * 100) / 100 原理就是: Math的round方法是取到整数的四舍五入. 乘以100, 相当于取到小数点后两位的四舍五入近似数. 再除以一百, 如果有小数的, 就会保留小数位, 没有小数的, 就直接显示整数 ... -
double保留两位小数
2020-09-04 15:32:56对于小数我无法进行详细的运算,但是将其成语10的n次方,后,将其小数点后的数据删掉,再将其乘以0.1的n次方后,我们得到了一组数据,一组有用的数据。优点:容易想到,缺点:没有四舍五入 第二种想法: double ... -
java语言输出小数点后保留一位小数
2020-08-08 20:58:56给定两个整数相除,要求输出结果保留一位小数,且计算结果一位小数位数直接保留,其他位直接舍去。 比如,计算结果为: 2.89 则应输出2.8 2.84 则应输出2.8 也就是不按照四舍五入的标准输出。 代码如下: int a; int... -
两个double相减_js中两个小数相减,出现的多位小数
2020-12-21 07:31:21核心也就是先转整数,运算完成再转小数,当然转的方法不是像@mcfog兄反对的那样直接乘以100,要不还是会出现问题的,而是先转字符串去掉小数点。用法如下://使用数字的literal表示,创建一个Decimal对象var d1 = ... -
java中如何使Double类型的数值保留两位小数问题
2017-02-10 15:04:47其中dou是变量,很简单吧,我们大多数人都知道Math.round()方法,可是我却没想到保留两位小数就是先乘以100再除以100. 同理保留N位小数就不用说了吧 二、第二种方法 double d = 111231.5585; BigDecimal b = n -
java中如何使Double、float类型的数值保留两位小数问题
2016-11-17 18:26:43其中dou是变量,很简单吧,我们大多数人都知道Math.round()方法,可是我却没想到保留两位小数就是先乘以100再除以100. 同理保留N位小数就不用说了吧 二、第二种方法 double d = 111231.5585; Big -
oracle round函数保留两位0没有了_Excel函数之保留小数位数
2020-12-05 17:23:31一、Text:Text公式在保留小数时根据要保留的位数来设置其形式,这里公式中的“0.000”即是三位小数的形式,乘以1将文本变为数值,对保留的结果会进行四舍五入;二、Round/Rounddown/Roundup:Round/Rounddown/... -
python保留小数不四舍五入_python - 只取两位小数而不四舍五入 - SO中文参考 - www.soinside.com...
2020-12-22 00:34:24如果你想截断数字,有几种方法 - 其中一种方法是将数字乘以10提升到所需的小数位数(100位为2位),应用“math.floor”,然后除以总回数相同。但是,由于内部浮点运算不是基数10,因此您可能会在分区上获得更多的小数... -
从键盘输入某个十进制小数或整数,转换成对应的二进制小数并输出。... 最多保留小数位后7位数字即可)算法
2017-07-15 11:09:55/*算法:把小数分成两截,一截是整数,一截是小数...小数乘以2,取整然后打印2进制,直到小数部分为0为止,或者打印小数 后7位为止。(实就是每次循环让第一个数x0.1,第二个数x0.01,依次如此。 最后相加,打印累加的 -
C#保留2位小数的做法
2017-08-28 10:44:00保留两位的话,就用一个浮点型先乘以100,然后取整,取整完了之后,再乘以1.0,然后再除以100。 上面这种做法是保留n位,不会四舍五入的。因为这是一个简单的做法。 这个返回值也是double类型 float f = 0.... -
python最终收入为税前减去税款、并保留两位小数_求计算机大佬解答python题
2020-12-30 04:06:19该楼层疑似违规已被系统折叠隐藏此楼查看此楼7-4 计算指数 (5 分)真的没骗你,这道才是简单题 —— 对任意...输入样例:5输出样例:2^5 = 327-5 A乘以B (5 分)看我没骗你吧 —— 这是一道你可以在10秒内完成的题:... -
直接舍掉2位后小数的做法
2020-11-28 15:51:40在做算法题的时候,经常可能会出现保留几位小数的情况。对于”直接舍掉2位后的小数“的方案有如下两种: 1、作为整数输出。如12.12345: 先乘以100,得到1212.345; 然后强转为int就得到了1212; 最后除以100.0... -
access两位小数不进位_五年级上册数学易错题汇总解析,可以让孩子适当练习,举一反三,不容易出错。...
2020-12-18 01:50:58把50.4的小数点向左移动两位,就是把它缩小到原来的()。3、两个因数相乘,一个因数扩大10倍,另一个因数扩大3倍,积会()。4.一个不为0的数乘以0.8,它的积比这个数()。一个自然数乘以0.01,就... -
请问用javascript加减法计算如何保留最少2位小数呢?
2010-03-30 12:34:47加法: Java 代码 1. //说明:javascript的加法...我想实现的是以上代码计算后的结果最少要有2位小数,以0补位,计算后得到的如果小数位多,就不管,谢谢 如 2+2 结果为4.00 2.11111+2.11111=4.22222 -
团体程序设计天梯赛-练习集——L1-029 是不是太胖了、L1-051 打折(精确到某位小数)
2021-02-19 22:10:51据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……) 输入格式... -
【题目】两个整数相除得到循环小数,求循环节
2018-08-30 22:52:25除法运算时,两个数相除得到整数和余数,然后把余数乘以10,再除以除数得到下一位,以此类推: 当得到的整数和余数在之前有出现过,小数就出现循环了。 代码: void function(int a, int b) { vector&...