文档章节

数值保留小数点两位,但同时去除小数点后多余0 的 javascript、java实现

文文1
 文文1
发布于 2016/11/25 23:11
字数 497
阅读 508
收藏 1

今天碰到一个需求。关于小数点的处理,看起来非常简单的事情,却花了一定时间做了一些试验。最后简单总结一下,以便备忘

需求简化一下表达是这样的:

有A、B两列,A/B=C。这3列在数据库中都以decimal存放。

在应用中,要求这3列,最多保留两位小数,去掉小数点后无意义的0。举例如下:

3.03表示为3.03

3.30表示为3.3

3.0表示为3

前后端都会改变这几个数据。

1、前端实现。(JavaScript

前端javascript而言,因为小数点精度计算经常有误差,为确保得到2位小数点,调用了toFixed函数。但是,toFixed以后,不管小数点后是不是0,都保留2位。

var a = 6.02;

var b = 3.01

var c = a/b.toFixed(2) ;//c得到了2.00

为了得到2,想了一个迂回的办法:c = a/b.toFixed(2)*100/100(如果是保留三位小数,则*1000/1000

也可以这么做:

parseFloat("2.40").toFixed(2)*1 //parseFloat会去掉多余的0,但是toFixed在实际小数位不够的时候,会出现多余的0

用java.text.DecimalFormat("0.##")即可。

BigDecimal a = new BigDecimal(“6.02”);

BigDecimal b = new BigDecimal(“3.01”);

与js不同,不能用*100/100的方式,因为java中BigDecimal的运算小数点是以公式中各项的最长小数点位数作为最终结果的小数点位数。这样处理后结果仍然是2位数。

用DecimalFormat(“0.##”)即可解决。

另外附上一篇其他人的文章,大家可以测试下:

一
 java.text.DecimalFormat df=new java.text.DecimalFormat("#.##"); 
 double d=3.14159; 
 System.out.println(df.format(d)); 

 二

 java.math.BigDecimal 
 BigDecimal bd = new BigDecimal("3.14159265"); 
 bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP); 

 三

 class Test1{ 
     public static void main(String[] args){ 
     double ret = convert(3.14159); 

     System.out.println(ret); 
 } 

 static double convert(double value){ 
    long l1 = Math.round(value*100); //四舍五入 
    double ret = l1/100.0; //注意:使用 100.0 而不是 100 
    return ret; 
    } 
 } 

 四

 double d = 13.4324; 
 d=((int)(d*100))/100;

 

本文转载自:http://www.cnblogs.com/waterforever/archive/2010/03/25/1695289.html

文文1
粉丝 25
博文 434
码字总数 135860
作品 0
长沙
程序员
私信 提问
我认为一些必知的JavaScript基础知识

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。 JS作用:表单验证,减轻服务端的压力;添加页面动画效果;动态更改页面内容;Ajax网络请求。 下面简...

peakedness丶
2018/11/02
0
0
freemarker 数字格式化深入理解

一、使用内建函数c 特点: 不管其表现形式是怎样的(例如"123,456.123,456"、"123456.123456"、"000123456.123456000"、"123,456.123456"、"1,2345,6.123456"),只要小数分割符是'.'它就能转......

毛朱
2013/01/24
0
0
如何把Java的double类型变量保留两位小数

用DecimalFormat 是可以保留两位小数,但类型是String Java对double小数点后如果有两个0,只会保留一个吗?

2017/08/21
349
4
js小数点保留时的四舍五入问题的处理

需求:要求保留两位小数,四舍五入 js的toFixed方法保留小数时的处理是4、5舍6入 使用Math.round(x)来进行数值转换,把一个数字数字舍入为最接近的整数 为什么要乘以100除以10呢? 因为js涉及...

jia林
03/21
0
0
0.28+0.34=? 一个简单小数加法引发的思考

摘要: 浮点数不能随便加啊。 原文:0.28+0.34=? 一个简单小数加法引发的思考 作者:等你归去来 Fundebug经授权转载,版权归原作者所有。 0.28+0.34=? 我相信这个简单的加法,谁都会,肯定等...

Fundebug
2018/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

构造函数

1:基本概念 提起构造函数,我们需要从JS的创建对象开始,JS的创建对象有两种方式,一种是对象字面量法(把一个对象的属性和方法一一罗列出来),对象字面量法有一个明显的不足在于它不适合批...

凌兮洛
12分钟前
0
0
防抖

export default function debounce(fn, wait) { var timeout; return function() { var ctx = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(funct......

Js_Mei
12分钟前
0
0
RSS 阅读器及源

RSS 阅读器及源 万物皆可 RSS RSS源 1. go2think 2. cnblogs 3. justdojava 4. diyijc

近在咫尺远在天涯
17分钟前
2
0
一文了解金融行业服务治理

转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: 微服务等新技术在解决系统敏捷性的同时,也带来了新的问题,众多的服务被识别出来后需要有效的管理起来,内部系统与外部系统通过...

EAWorld
21分钟前
0
0
Retrofit2应对各种奇葩接口的方法

最近这一年半,实在是大开眼界了,面对各种奇葩的接口,在紧凑的开发周期下,没有时间细想如何去面对,好在最近稍微清闲了,就把遇到的各种奇葩接口整理了一下,自己手写Spring去模拟这些接口...

猴亮屏
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部