Double.valueOf("0.001")的值是0.0010,我就需要3位小数啊,怎么办? 具体类是java.text.DecimalFormat 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.text.*;public class FormatData { public static String getResult(double num) { NumberFormat format = NumberFormat.getNumberInstance(); format.setMaximumFractionDigits(3); return format.format(num); } public static void main(String[] args) { System.out.println(getResult(0.0010)); }} /************************************************** * <P> * 少数点以下N桁まで表示 * </P> * @param double dblNumber * @param int 少数点以下桁数 * @return String 変換された数値 **************************************************/ private String chgFloatN(double fltNumber, int n) { String strFloatN = null; NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(n); nf.setMinimumFractionDigits(n); strFloatN = nf.format(fltNumber); return strFloatN; } import java.math.BigDecimal;BigDecimal bigDecimal=new BigDecimal((double)0.001); perAnswer=bigDecimal.setScale(3,BigDecimal.ROUND_HALF_UP); 好像楼上诸位老兄都没有理解我的意思。我是把String转换成Double,后面不要加无用的0。而不是把Double转换成String。 楼主明显概念不清double与float是二进浮点方式保存的,不能理解成它存在十进制小数位数;如果一个十进制小数 1.23,保存成double或float变会变成1.22999999999999999999999999或1.2300000000000000000001所以跟double或float谈十进制小数位数毫无意义。但你将double或float转换成十进制时[实际变成了十进制串],你可以设置你需要的十进小数位数了。 Double(0.001)和Double(0.0010)对你来说有什么区别吗? 不显示在GUI上,你管它小数位有几位重要吗?抓狂。 对于小数的处理建议你不要用Double或Float,而用BigDecimal。 BigDecimal bd1 = new BigDecimal(Double.valueOf("0.0010").doubleValue()); BigDecimal bd2 = bd1.setScale(3, BigDecimal.ROUND_HALF_UP);//这里设置精度 System.out.println(bd2); 象 okwuzhijun(SKYSEA) 等的方法都是对的,他们是把Double.valueOf("0.001")的返回值也就是 0.0010 进行格式化,使之成为 0.001. 各位大哥: 客户要求的数据库里的字段就是要2位整数3位小数,你们说有没有区别啊。如果无所谓不用解决的话,我闲着无聊来这里干嘛呀。我是要求存进数据库是是3位小数,可是在转换时就变成了4位,我怎么能不郁闷呢?我不是Double到Double,也不是Double到String,而是String到Double 。 问一下你用什么来操作数据库?用EntityBean还是直接写sql? 存成STRING,用的时候再换回来不就行了么,或者你在存数据库的时候使用sql函数转换一下格式。 关于final关键词 请高手帮我改一下冒泡算法。我觉得这么写是正确的可是错了。 JTable中的数据为什么向右对齐,可不可以强制设置让其左对齐? 在提示工具中如何加入图标?? 关于主从按钮...请知道的朋友帮帮忙. 数据库的问题。 如何知道按下的是鼠标左键还是右键?? 求助! 我靠,我真受不了了,为什么我的eclipse总是不能工作?????? 初级小问题,希望大家帮着解决一下! 怎样用Runtime 执行 nslookup命令 JDBC驱动的一个小问题?
NumberFormat format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(3);
return format.format(num);
} public static void main(String[] args) {
System.out.println(getResult(0.0010)); }
}
* <P>
* 少数点以下N桁まで表示
* </P>
* @param double dblNumber
* @param int 少数点以下桁数
* @return String 変換された数値
**************************************************/
private String chgFloatN(double fltNumber, int n) {
String strFloatN = null; NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(n);
nf.setMinimumFractionDigits(n);
strFloatN = nf.format(fltNumber);
return strFloatN;
}
perAnswer=bigDecimal.setScale(3,BigDecimal.ROUND_HALF_UP);
double与float是二进浮点方式保存的,不能理解成它存在十进制小数位数;
如果一个十进制小数 1.23,保存成double或float变会变成
1.22999999999999999999999999或1.2300000000000000000001
所以跟double或float谈十进制小数位数毫无意义。
但你将double或float转换成十进制时[实际变成了十进制串],
你可以设置你需要的十进小数位数了。
BigDecimal bd2 = bd1.setScale(3, BigDecimal.ROUND_HALF_UP);//这里设置精度
System.out.println(bd2);
客户要求的数据库里的字段就是要2位整数3位小数,你们说有没有区别啊。
如果无所谓不用解决的话,我闲着无聊来这里干嘛呀。我是要求存进数据库是是3位小数,可是在转换时就变成了4位,我怎么能不郁闷呢?我不是Double到Double,也不是Double到String,而是String到Double 。