草庐IT

Bigdecimal

全部标签

java - 模数不起作用

我知道这看起来是一个非常愚蠢的问题,但我只是不明白为什么这不起作用。这:System.out.println(5%.10);它正在返回:0.09999999999999973我真的不知道。我只是在学习Java,而且我对C#相当擅长,所以我尝试使用C#来。C#似乎也返回同样的东西。 最佳答案 正如其他人所解释的,这是由于浮点精度导致的不准确。你应该使用BigDecimal,在本例中为remaindermethod用于涉及小数的精确算术。BigDecimalnumber=newBigDecimal(5);BigDecimaldiviso

java - 使用 BigDecimal 限制有效数字的任何巧妙方法

我想将JavaBigDecimal舍入到一定数量的有效数字(不是小数位),例如到4位数:12.3456=>12.35123.456=>123.5123456=>123500等基本问题是如何找到BigDecimal的数量级,这样我就可以决定在小数点后使用多少位。我能想到的就是一些可怕的循环,除以10直到结果为顺便说一句,这个数字可能非常大(或非常小),所以我无法将其转换为double以在其上使用Log。 最佳答案 为什么不直接使用round(MathContext)?BigDecimalvalue=BigDecimal.valueOf

Java - 如何将 float (或 BigDecimal )值四舍五入 0.5?

看似简单的问题,但我的数学真的很烂而且我在网上搜索过的几个例子似乎都不适合我。(结果只是返回与输入等相同的值)例如..但它是用C而不是JavaRoundtoNext.05inC所以我的目标是我有%.1f格式float或double或bigdecimal并且想要四舍五入到最接近的.5example:1.3-->1.55.5-->5.52.4-->2.53.6-->4.07.9-->8.0我尝试了以下示例但没有成功:(下面仅输出1.3,这是原始值。我希望它是1.5publicclasstmp{publicstaticvoidmain(String[]args){doublefoo=1.3;

java - 如何获得唯一确定给定 double 的 "shortest"BigDecimal

基本上,我很好奇如何在不经历创建字符串的过程的情况下获取newBigDecimal(Double.toString(d))。documentationforDouble.toString非常复杂(也很有趣)。据我了解,该方法实际上并不返回给定double实际表示的数字的字符串表示形式,而是返回唯一标识给定double的(附近)最短实数的字符串表示形式.(我实际上并不需要这个。如果我这样做了,我可能无论如何都会通过一个字符串。我只是对这个找到这个“短”实数的算法感到好奇唯一确定给定的double值。)(这是关于thisquestion的后续问题。) 最佳答案

java - BigDecimal 的规范表示

减少Java的最简单方法是什么BigDecimal包含规范形式的任意值,以便表示相同数字的两个BigDecimal使用equals()比较相等方法?我正在使用如下代码从任意字符串中解析我的数字:BigDecimalx=newBigDecimal(string1,MathContext.DECIMAL64);BigDecimaly=newBigDecimal(string2,MathContext.DECIMAL64);因为(string1,string2)是任意的,它们可以是,例如("1","1.0000")或("-32.5","1981")...我正在寻找的是上述断言所针对的规范化方

java - BigDecimal 和金钱

我研究发现,在处理货币时,进行计算的最佳方法是使用BigDecimal类。考虑到这一点,我正在编写一种代码,可以将各种类型的外币转换为美元,反之亦然(具体来说,收银机将外币转换为美元,计算找零和返回该金额以外币形式支付给客户)。截至目前,许多方法都使用double,其中两个将int作为参数用于计算美国货币。问题:既然我想在我的计算中使用BigDecimal类,我是否应该将所有进行涉及double计算的方法更改为BigDecimal? 最佳答案 是的,您应该将所有float或double更改为采用整数、长整数或BigDecimals。

java - 如何将 XmlAdapter 全局应用到 JAXB 程序?

我正在使用JAXB(通过一堆JaxWS和CXF)并尝试将BigDecimal类型编码为字符串(数字)和int(指数),因为我们现在有一个无法解释BigDecimal的前端,这要归功于语言环境问题。我正在尝试的是使用XmlAdapter将BigDecimal转换为我自己的类型BigDecimalUnScaled。只要我将@XmlJavaTypeAdapter注释直接放在字段上,这就可以正常工作。但是,我真正想做的是将它放在我的Web服务实现中,并让它全局应用于所有BigDecimals,而不必单独编码每个返回对象。我有什么办法可以做到这一点吗?例如InterfaceDummyWebSer

java unmarshalling - NULL 值或缺少标记?

我在一个由解码器设置的类中有一个可为空的字段:@XmlElement(name="value",nillable=true)privateBigDecimalvalueVariable;我的问题是我无法判断xml元素是否已被省略或设置为nil:一个。元素XML文件中缺少它,因此它不是必需的。=>(valueVariable==null)为真B.XML文件包含=>(valueVariable==null)为真如果值为xsi:nil,我如何判断一个非字符串变量?还是标签丢失了?更新您可以看到2个好的解决方案,我更喜欢其中一个,但另一个也可以! 最佳答案

java - 未在空值上调用 JSF 自定义转换器

我为输出java.math.BigDecimal时创建了自定义转换器。当BigDecimal为0.00或null时,我想输出一个破折号。这是我的XHTML我遇到的问题是,当#{item.currentValue}为null时,转换器中的getAsString方法未被调用。@FacesConverter("my.bigDecimalConverter")publicclassBigDecimalConverterimplementsConverter{@OverridepublicStringgetAsString(FacesContextcontext,UIComponentcompo

java - Nashorn 不再使用 BigDecimal

我们从OracleJDK8u77升级到8u92,突然之间以前可以工作的脚本不再工作了。一个最小的复制器是:Mapattributes=Collections.singletonMap("GROSSREIMBAMOUNT",BigDecimal.ZERO);Stringscript="GROSSREIMBAMOUNT.toFixed(2)";ScriptEngineManagermgr=newScriptEngineManager();ScriptEnginejsEngine=mgr.getEngineByName("JavaScript");for(Entryentry:attribu