急! 如何求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);//打印表达式的值 我是菜鸟,请大神帮我看看这个代码哪里错了 北大ACM1458,我用java写的,老runtime error,求解 传智播客俄罗斯方块程序的问题,做过的帮忙看看 有人有类似qq存储聊天记录的程序吗。发一段参考下把 J2se 上如何处理连续按键的问题 如何只用一个小容量数组或列表来排序大量的数据 jfreechart问题 一个有趣的问题?????期盼解答/ jdbc与mysql连接问题 现在我在jb里面是可以使用鼠标的滚轮了,虽然还是不能左右滚动,但是如何能在我的程序中也可以用鼠标的滚轮呢!!!!!(全部分了) 公积金数据表都需要什么字段 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);//打印表达式的值