BigDecimal怎么java判断大于当前时间是否大于零

5115人阅读
因为BigDecimal的原因吧,也可以说是double的问题吧
new&& BigDecimal(currentLat2); 时值不再是 2.455675而是2.
因此在保留5位小数,四舍五入时,就变成2.45567而不是2.45568
后一个正确是因为没形成这种数据。
这种情况,用字符串可以避免这种问题
String currentLat2 = &2.455675&;
&& &&& &BigDecimal&& b&& =&& new&& BigDecimal(currentLat2);& &
&& &&& &System.out.println(b.setScale(5,&& BigDecimal.ROUND_HALF_UP).doubleValue());
======================使用方法======================
BigDecimal ..setScale(5,&& BigDecimal.ROUND_HALF_UP)& --&保留五位小数
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:132490次
积分:1684
积分:1684
排名:千里之外
原创:19篇
转载:126篇
(1)(2)(4)(2)(2)(2)(5)(9)(4)(5)(1)(8)(6)(1)(2)(7)(2)(3)(5)(6)(1)(1)(2)(2)(3)(13)(4)(3)(6)(11)(5)(10)(6)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'博客访问: 4197018
博文数量: 669
博客积分: 10821
博客等级: 上将
技术积分: 11323
注册时间:
认证徽章:
专注与操作系统相关的云计算,linux,openstack,spark, hadoop
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java
以前用的int,long多一些。今天用到了Bigdecimal。一点体会:
判断一个数是否大于99.9一般的想法是:
BigDecimal aa = new BigDecimal(99.99).setScale(1, BigDecimal.ROUND_HALF_UP);
&&&&&&& if (aa.compareTo(new BigDecimal(99.9)) == 1){
&&&&&&&&&&& System.out.println("Largerl!!!");
&&&&&&& } else if (aa.compareTo(new BigDecimal(99.9)) == 0){
&&&&&&&&&&& System.out.println("Equal!!!");
&&&&&&& } else if (aa.compareTo(new BigDecimal(99.9)) == -1){
&&&&&&&&&&& System.out.println("Lower!!!");
Largerl!!!
我把(new BigDecimal(99.9))打印出来:
结果出乎预料:
99.0489734
发现问题解决很简单:
&if (aa.compareTo(new BigDecimal(99.9)) == 1){
&if (aa.compareTo(new BigDecimal(99.9).setScale(1, BigDecimal.ROUND_HALF_UP)) == 1){
即小数位数一样时再check
阅读(1376) | 评论(3) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。mybaits中的BigDecimal的值到底是NULL还是0 - ITeye问答
数据库是mysql
字段的类型为:Decimal
java的类中,定义的类型为:BigDecimal
1,java—&DB
在java设置值为0,但是在mybatis中的sql中,取得的值为null
2,DB—&java
数据库中的值为0,java中的类型取得的,却是NULL
改怎么解决,统一。
为null的时候,统一为null
为0的时候,统一为0
目前还没有答案
已解决问题
未解决问题BigDecimal类型比较大小
&& 这个类是java里精确计算的类
&& 1 比较对象是否相等
一般的对象用equals,但是BigDecimal比较特殊,举个例子:
BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);
在现实中这两个数字是相等的,但是问题来来了
a.equals(b)结果是怎么不相等了呢?这个问题我也不知道
解决办法:
&&&&&&&&&&&
pareTo(b)==0)结果是true
public int compareTo(BigDecimal val)
结果是-1 小于
pareTo(b) == -1){
pareTo(b)==0){
pareTo(b)==1){
public static MathContext mc = new MathContext();
public static BigDecimal add(BigDecimal a1,BigDecimal a2){
&& a1=null2Zero(a1);
&& a2=null2Zero(a2);
&& return a1.add(a2,mc);
public static BigDecimal null2Zero(BigDecimal arg){
&&& return
arg==null ? BigDecimal.ZERO :
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 bigdecimal判断大于0 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信