我正在寻找一个方法,如果传递的字符串是有效数字(例如"123.55e-9"," - 333,556"),则返回一个布尔值.我不希望只是做:
public boolean isANumber(String s) {
try {
BigDecimal a = new BigDecimal(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
显然,该函数应使用状态机(DFA)来解析字符串,以确保无效示例不会欺骗它(例如"-21,22.22.2","33-2").你知道这个库是否存在吗?我真的不想自己写,因为这是一个明显的问题,我相信我会重新发明轮子.
谢谢,
缺口
你好,我有一个BigDecimal临时变量,我希望它可以在一个函数中重用.如果值大于零,我有办法将此变量重置为零吗?
谢谢 @!
我想知道如何将pi生成到第n位.我有几个基本想法.
Math.PI并提高精度(如果可能的话)

所以简而言之,无论哪种方式,我都需要BigDecimal根据第n位数来提高精度.如何提高BigDecimal第n位的精度?此外,如果有更好更快的做法,请指点我正确的方向.
编辑:我只想生成PI.我不想用于计算.这是一个关于如何使用BigDecimal实现我生成PI的想法的问题.
创建:很容易
object zero extends BigDecimal(java.math.BigDecimal.ZERO)
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是否是一个疏忽,或者是否有意识地决定不添加这个,如果有的话,我有理由避免上面的代码.也许与此有关MathContext?
我正在寻找Delphi Data.FmtBcd库的替代品,因为我只是达到它可以表示的最大十进制数字的限制,并且程序终止于EBcdOverflowException.对于好奇,我正在计算算术系列成员,需要处理非常大的数字 - 数十万个位置并不是那么罕见.并在合理的时间内获得结果.我确实将部分代码重写为Python 3.2用于测试目的,并且计算速度足以满足Delphi的要求.
有关此类库的一些建议,最好是免费还是开源?
我无法找到为什么我java.lang.ArithmeticException: Invalid operation使用大十进制有一段 时间.
public static String E (int exponent, String value){
BigDecimal ten= new BigDecimal("10");
BigDecimal tempValue=new BigDecimal (value);
return tempValue.multiply(ten.pow(exponent)).toString();
}
Run Code Online (Sandbox Code Playgroud)
一些指数具有诸如的价值-27.有没有办法解决这个问题,因为很难用很多零存储原始值.因为我需要精确度,所以我选择了BigDecimal.
谢谢
我使用javax.persistence API和Hibernate在Oracle 11g Express数据库中创建注释并保留实体及其属性.
我在实体中有以下属性:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Run Code Online (Sandbox Code Playgroud)
目标是在小数点右侧保留一个最多12位的十进制值和最多9位数.
计算后weightedScore,结果为0.1234,但是一旦我使用Oracle数据库提交实体,该值显示为0.12.
我可以通过使用EntityManager对象查询条目或直接在Web浏览器的Oracle Application Express(Apex)界面中查看它来看到这一点.
我应该如何注释我的BigDecimal属性,以便正确地保持精度?
注意:我们使用内存中的HSQL数据库来运行我们的单元测试,并且它不会遇到缺少精度的问题,无论是否有@Column注释.
更新:
查看表描述,weightedScore列的定义是NUMBER(19, 2).我现在也尝试将注释更改为@Column(columnDefinition="Number(12, 9)"),但这没有任何效果.有谁知道为什么Oracle对这些注释没有反应?
我有一个简单的BigDecimal,我想为另一个BigDecimal供电,例如11.11 ^ -1.54.在Java/Android中最好的方法是什么?我不喜欢转换为双打的想法,因为它是用于医疗应用,所以我很欣赏最大的可能性.到目前为止,我已经查看了来自Google Guava的http://commons.apache.org/math/和数学内容,但一无所获.
编辑:整个计算很复杂,并且有很多这样的操作.我需要尽可能多的精度.
运行我的RSpec测试后,我经常得到如下输出:
expected: 50
got: #<BigDecimal:7fbdcd1b5408,'0.22E3',9(36)>
Run Code Online (Sandbox Code Playgroud)
我怎样才能知道RSpec到底有多少人?
谢谢你的帮助.
-:total_cost_with_tax => #<BigDecimal:7fda9d17aaf0,'0.105225E4',18(45)>,
-:total_cost_without_tax => #<BigDecimal:7fda9d17b450,'0.972E3',9(36)>,
-:total_last_installment_amount => #<BigDecimal:7fda9d17b978,'0.8011E2',18(45)>,
-:total_monthly_installment_amount => #<BigDecimal:7fda9d17abb8,'0.8011E2',18(45)>,
-:total_tax => #<BigDecimal:7fda9d17b068,'0.8025E2',18(45)>,
+:total_cost_with_tax => #<BigDecimal:7fda9d0184c8,'0.105225E4',18(36)>,
+:total_cost_without_tax => #<BigDecimal:7fda91ff2b48,'0.972E3',9(27)>,
+:total_last_installment_amount => #<BigDecimal:7fda91fee548,'0.8011E2',18(36)>,
+:total_monthly_installment_amount => #<BigDecimal:7fda91fe72c0,'0.8011E2',18(36)>,
+:total_tax => #<BigDecimal:7fda9d00a2b0,'0.8025E2',18(36)>,
Run Code Online (Sandbox Code Playgroud)
因此,在我的一些测试中,这些都是散落的...... rspec 2,rails 3.我正在比较使用的哈希进行.should eq()比较.我似乎无法使咒语正确.看起来它是一个精确的东西,这似乎很傻.