JFinal:java.math.BigDecimal cannot be cast to java.lang.Float

andying 发布于 2014/03/05 10:12
阅读 3K+
收藏 0

@JFinal 你好,想跟你请教个问题:

我在做一个购物车测试功能,小计金额时报错如下:

 java.math.BigDecimal cannot be cast to java.lang.Float

数据后台的表price字段的类型如下:

Name      Type         Length        Decimals

price       decimal      10                2      

qty的int型与price中的Float型相乖报错,应如何解决?,thks.

public class Gallery extends Model<Gallery> {
  public static final  Gallery dao=new Gallery();
  
}



                            
package com.demo.car;

import com.demo.gallery.Gallery;

public class CarItem {
	private Gallery  gallery;
	private int qty;
	private float  totalPrice;
	
	public CarItem(Gallery  gallery,int qty){
	   super();
       this.gallery=gallery;
       this.qty=qty;
	}
	
	
	public Gallery getGallery() {
		return gallery;
	}
	public void setGallery(Gallery gallery) {
		this.gallery = gallery;
	}
	public int getQty() {
		return qty;
	}
	public void setQty(int qty) {
		this.qty = qty;
	}
	public float  getTotalPrice() {
		this.totalPrice=this.qty*this.gallery.getFloat("price"); // 此处报错
		return totalPrice; 
	}
	
	public Float getPrice(){
		return this.gallery.getFloat("price");
	}
	

}                                                                                        



加载中
0
andying
andying

引用来自“黄开源中国”的答案

建议查看一下 BigDecimal的api。。。具体就是创建一个BigDecimal对象,利用他的乘法方法。。先相乘,再取你要的int或者float
BigDecimal bdQty=new BigDecimal(this.qty);
  BigDecimal bdPrice=this.gallery.getBigDecimal("price"); 
  
  this.totalPrice= bdQty.multiply(bdPrice);
  return totalPrice;



终于搞定了,本人对Java也是边学边实践,不深入,要不是这个测试遇到,还真不知道Java相乘要这样处理,为什么不能用 *  ? 可能又是面向对象惹的 ,谢谢各位指点.
2
JFinal
JFinal
    用 BigDecimal 保存值,或者将 BigDecimal 转成 Float 保存起来
hlevel
hlevel
您还真是有耐心,不管问题类型,使用了jfinal 都解答。佩服。赞一个。
0
andying
andying

引用来自“JFinal”的答案

    用 BigDecimal 保存值,或者将 BigDecimal 转成 Float 保存起来

能在以上代码的基本上改改吗?我改成如下还是不行,

public BigDecimal  getTotalPrice() {
     BigDecimal bd=new BigDecimal(this.qty);
    this.totalPrice= this.qty  * this.gallery.getBigDecimal("price");
    return totalPrice; 
}




The operator * is undefined for the argument type(s) java.math.BigDecimal, java.math.BigDecimal

Java怎么这么麻烦,一个简单的相乘还要转来转去。


0
黄开源中国
黄开源中国
建议查看一下 BigDecimal的api。。。具体就是创建一个BigDecimal对象,利用他的乘法方法。。先相乘,再取你要的int或者float
返回顶部
顶部