急! 如何求double的,第n位的小数值 当double的数比较大时,它用科学计数法了,,,请帮忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 都说double不是很精确的,如果要精确运算,用bigdecimal参看http://blog.csdn.net/tavor/archive/2008/02/25/2118553.aspx for(int i=0;i<n;i++) { x = x*10;}int result = x %10; double 的精度有限,如果lz需要很高精度,用BigDecimal代替double。 同意LZ查阅一下BigDecimal的用法吧 把double 变成 BigDecimal,就能知道第n位,是几了吗 大伙的意思,不要用double这种数据类型,用bigdecimal double不能精确表示,所以你用的时候有时候是得不到准确的小数部分,举个例子,如下 double dd = 2222222333.99999911199399d; double dd2 = 2222222333.99999922299399d; System.out.println(dd==dd2);输出结果true所以是不能够用double类型来精确表示,推荐用bigdecimal。 有人这么说过答:楼主的问题很好啊。 对超过double值范围的或者说:高精度(或任意精度)的表达式求值问题,请楼主使用著名的JEP包吧(JAVA表达式求值包,功能很强大!) 如:楼主的例子(引申一下,变得更复杂些): 234535098234095890234589038.9999999998888888888888888888888888888888*(923948723894723947230598.7777777777777777+12.00999999999999999999999999999999999999999999999999) 值为: 2.166984047219166216979260416663208E+50(精度我设定的是:MathContext.DECIMAL128) 使用的参考代码:(总共三步) Jep jep = new Jep(new BigDecComponents(MathContext.DECIMAL128));//生成指定计算精度的jep对象Object rs=jep.evaluate( jep.parse("234535098234095890234589038.9999999998888888888888888888888888888888*(923948723894723947230598.7777777777777777+12.00999999999999999999999999999999999999999999999999)" ));//对指定的任意表达式进行求值System.out.println(rs);//打印表达式的值 菜鸟求大神赐教哇~~~ 在java里怎么把一个String转成Date 请问各位高手,哪里可以找到IBM viavoice引擎,或者买的话,哪里有买,急呀!!!!!!!!! 小狗来回跑的问题 初学--请问如何与数据库CLOUDSCAPE进行互连 卡住了 问一下数据源的事!请大家帮忙 [求助]帮看看这个程序... 一段有关用java.util.regex进行精确匹配的代码,有个错一直找不出来,want a go ?--> 请问:mailProps.put("mail.smtp.host","");第二个参数什么意思? 答對這有分 公积金数据表都需要什么字段 java最大流问题
参看http://blog.csdn.net/tavor/archive/2008/02/25/2118553.aspx
x = x*10;
}
int result = x %10;
LZ查阅一下BigDecimal的用法吧
double dd2 = 2222222333.99999922299399d;
System.out.println(dd==dd2);输出结果
true所以是不能够用double类型来精确表示,推荐用bigdecimal。
对超过double值范围的或者说:高精度(或任意精度)的表达式求值问题,请楼主使用著名的JEP包吧(JAVA表达式求值包,功能很强大!)
如:楼主的例子(引申一下,变得更复杂些):
234535098234095890234589038.9999999998888888888888888888888888888888*(923948723894723947230598.7777777777777777+12.00999999999999999999999999999999999999999999999999)
值为:
2.166984047219166216979260416663208E+50(精度我设定的是:MathContext.DECIMAL128) 使用的参考代码:(总共三步)
Jep jep = new Jep(new BigDecComponents(MathContext.DECIMAL128));//生成指定计算精度的jep对象
Object rs=jep.evaluate(
jep.parse("234535098234095890234589038.9999999998888888888888888888888888888888*(923948723894723947230598.7777777777777777+12.00999999999999999999999999999999999999999999999999)"
));//对指定的任意表达式进行求值
System.out.println(rs);//打印表达式的值