【java – 从String转换为BigDecimal以对货币进行数学运算】教程文章相关的互联网学习教程文章

Java中的BigDecimal类和int和Integer总结【代码】

前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题。如下一段代码: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0.42); System.out.println(4.015 * 100); System.out.println(123.3 / 100);输出: 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2329999999999999 可以看到在Java中进行浮点数运算的时候,会出现丢失精度的问题。那么我们如果在进行商品价格计算的时候,就会出现问...

java – BigDecimal规模和计算【代码】

我使用BigDecimal进行计算.为了计算结果,我做了:result.setScale(4, RoundingMode.HALF_UP);当使用BigDecimal的.divide方法时,需要进行缩放和舍入,所以现在我这样做:BigDecimal result = bigDecimal1.divide(bigDecimal2, 10, RoundingMode.HALF_UP);所以我只是使用足够大的比例来确保计算是正确的.但我不确定这是否是使用BigDecimal进行计算的正确方法,我对此有疑问…… 所以任何指针都表示赞赏.解决方法:您需要清楚地了解您认为...

java – 当使用BigDecimal乘以100时哪种方法会更好?【代码】

在使用Java BigDecimal时,我有一个问题.当我想为BigDecimal的对象乘以100时,哪种方式会更好. >乘以10两次;> movePointRight(2);> scaleByPowerOfTen(2);>还有其他方式吗?请告诉我是否有. 顺便说一句,它将用于商业计算,所以我考虑的是精度而不是速度.解决方法:选项3是最快的.选项1和2大致相同(选项一是乘以十两次).乘以100而不是接近选项3的速度. 这是我的测试代码:import java.math.BigDecimal;public class TestingStuff {publi...

在java 8中并行使用BigDecimal进行分组和求和【代码】

我有一个产品列表,其中包含其中一个属性.并且列表可以包含公共产品名称,其他属性不同.所以我想按产品和使用分组和求和在java 8中共享公用名的产品数量的总和对列表进行分组.Example: [ { "name":"Product A","amount":"40.00","description":"Info1","number":"65"},{ "name":"Product A","amount":"50.00","description":"Info2","number":"67"},{ "name":"Product A","amount":"100.00","description":"Info3","number":"87"...

Java BigDecimal与Android BigDecimal

我遇到了java.math.BigDecimal和android.icu.math.BigDecimal,因为我需要在项目中使用BigDecimal. 我意识到Android BigDecimal需要API级别24 这两个班级有什么不同?我想知道Android实现中是否有任何性能优化?解决方法:android.icu.math.BigDecimal是ICU library(Unicode的国际组件)的一部分.从API 24开始,Android框架公开了一些ICU4J类供您使用. Android documentation on Unicode and I18N support指出:Some classes in the ja...

Java 6和Java 8之间的Java BigDecimal.doubleValue【代码】

情况1:在Java6中BigDecimal(“0.0050000”).doubleValue()返回0.0050,在Java 8中返回值为0.005 情况2:在Java6中BigDecimal(“0.0250000”).doubleValue()返回0.025,在Java 8中返回值为0.025 在案例1:Java 6返回额外的尾随零..任何想法?另外,如何使Java 8返回与Java 6相同的输出解决方法:System.out.println在java6和java8中的工作方式有所不同.另外我们谈论双打,BigDecimal在这里不是问题.我们可以将此示例简化为:System.out....

java – 从String转换为BigDecimal以对货币进行数学运算【代码】

我正在开发一个项目,需要对货币执行一些简单的数学运算,但它以String的形式到达.我是Java / Android的新手,所以我正在寻找帮助从String转换为适合此操作的数据类型.起初我认为Float是正确的但是在读完其他地方并将自己介绍给数字类后,看起来BigDecimal是正确的.我是在正确的轨道上吗?此时,我只想从初始发票金额中减去付款总额.我觉得这段代码很简单但很笨拙,我怀疑我对使用货币的细微差别缺少很多.你会怎么做?所有建议都热烈赞赏...

java – 带有BigDecimal的Spring JDBC queryForObject失败【代码】

Java 1.7/Spring 3.1看看下面的代码.BigDecimal value = queryAsObject (BigDecimal.class, "select balance from financial.accounts where account_id = ?", accountId);queryAsObject来自抽象父类,它基本上执行CRUD操作.public <T> T queryAsObject(Class<T> modelClass, String sql, Object... args) {return jdbcTemplate.queryForObject(sql, new HawkBeanPropertyRowMapper<T>(modelClass), args);} 相当直接的春天jdbc电...

java – 这个BigDecimal计算有什么问题吗?【代码】

我是BigDecimal的新手.我尝试使用Java代码进行一些数学计算.当我使用Google计算器尝试相同的计算时,它会给我一个稍微不同的结果.哪一个最准确?如果谷歌计算器更准确,那么如何改进java代码来匹配呢? 在Google计算器上: 134.23576185216913 – (134.23576185216913√(1 – (200000000 ^ 2299800000 ^ 2)))= 34.2357618522 在Java上:BigDecimal t1 = new BigDecimal(134.23576185216913);BigDecimal one = new BigDecimal(1);Bi...

Java的BigDecimal是否利用C中的long double等硬件架构?

据我所知,C中的长双重实际上利用了硬件架构(至少对于某些架构而言). Java中的BigDecimal是否为足够小的输入执行此操作?解决方法:Does BigDecimal in Java do this for small enough inputs?不,它不可能.浮点数是有损的,而每个BigDecimal都有一个相关的精度,并且可以精确地表示低于该精度的任何数字.有没有“足够小的输入”,可以有效地呈现为一个浮点数,因为即使你碰巧有一个可以精确地用浮点符号表示的BigDecimal值,你会捉襟见肘做...

Java BigDecimal.round()【代码】

我正在尝试使用以下代码将BigDecimal值舍入到最接近的1000BigDecimal oldValue = new BigDecimal("791232");BigDecimal newValue=oldValue.round(new MathContext(3,RoundingMode.UP));System.out.println("Old ------- "+oldValue.intValue()); System.out.println("New------- "+newValue.intValue());这适用于上述输入.结果如下Old——>791232 New——>792000但是代码不适用于输入&LT 1,00,000(例如79123)和输入> 10,00,00...

java的BigDecimal比较大小

java的BigDecimal比较大小//前提为a、b均不能为null if(a.compareTo(b) == -1){System.out.println("a小于b"); }if(a.compareTo(b) == 0){System.out.println("a等于b"); }if(a.compareTo(b) == 1){System.out.println("a大于b"); }if(a.compareTo(b) > -1){System.out.println("a大于等于b"); }if(a.compareTo(b) < 1){System.out.println("a小于等于b"); }

java – 返回BigDecimal int的ResultSetMetaData【代码】

需要一些关于jdbc元数据的帮助.我正在使用ResultsetMetaData来获取Oracle10g上表的列的元数据.我正在使用ojdbc14.jar.表ID中的字段声明为Number.在运行时使用jdbc读取此字段以获取其元数据属性. ResultSetMetaData.getColumnClassName()返回java.math.BigDecimal,而我期望它是Integer或int或long或Long类型.我甚至尝试使用语句创建表,并明确定义ID列的int类型为CREATE TABLE COST_DETAILS ( ID **INT** Primary Key...但仍然Result...

java.math.BigDecimal除法不准确【代码】

在Kotlin,BigDecimal分部返回奇怪的结果.BigDecimal(1.0) / BigDecimal(2.0) // returns 0.0 // Just like Int(1) / Int(2) returns 0但:BigDecimal(1.1) / BigDecimal(2.0) // returns 0.55 // Just like Double(1.1) / Double(2.0) returns 0.55那么为什么会发生这种情况呢?如何在不使用divide()给出scale参数的情况下使用BigDecimal使1.0 / 2.0返回0.5? 更新: 以下是完整的代码:Welcome to Kotlin version 1.2.41 (JRE 1.8...

java – 在BigDecimal上下文中,是否可以使用小整数值初始化的double精确使用?【代码】

有充分证据表明,使用double会导致不准确,只要混合中没有双打,BigDecimal就能保证准确性. 但是,如果双重问题是一个小的整数,是否保证了准确性? 例如,虽然以下内容不准确/不安全:BigDecimal bdDouble = new BigDecimal(0.1d); // 0.1000000000000000055511151231257827021181583404541015625以下内容总是准确/安全吗?BigDecimal bdDouble = new BigDecimal(1.0d); // 1假设使用BigDecimals可以安全地使用小的整数双打是否安全 – ...

DECIMAL - 相关标签