java不需要返回数据时_从Java方法返回时,BigDecimal不保持实际值

我正在用

Java制作货币转换应用程序.其他一些很棒的StackOverflowians给了我建议读取BigDecimal,目的是替换double来解决任何精度问题.

我有两个方法系统;它从起始货币转换为美元,然后将美元价值转换为目标货币.

请注意,我的转化率存储如下:

// Conversion Rates - START (as of October 30, 2018 @ 3:19 AM)

// Rates obtained from exchange-rates.org

//Convert to United States Dollar rates

private final BigDecimal CAD_TO_USD = new BigDecimal(0.76135);

private final BigDecimal EUR_TO_USD = new BigDecimal(1.1345);

private final BigDecimal YEN_TO_USD = new BigDecimal(0.008853);

// Conversion Rates - END

在我用他们各自的BigDecimals取代我的双打之后 – 我决定测试它并看看它是如何运作的.

我的测试人员类运行以下方法来启动转换过程.

public BigDecimal convert()

{

BigDecimal value;

value = convertToUSD(); //Converts the current currency into USD

value = convertFromUSD(value); //Converts the previous USD currency value into the destination currency

return value;

}

当我输入我的样本变量(将2.78 YEN转换为加元)时,我逐步完成了整个过程,发现一切都在运行,直到我返回一个值.

从前面提到的方法,运行convertToUSD()并编码如下

private BigDecimal convertToUSD()

{

switch (fromCurrency)

{

case "USD":

return fromQuantity.multiply(new BigDecimal(1));

case "CAD":

return fromQuantity.multiply(CAD_TO_USD);

case "EUR":

return fromQuantity.multiply(EUR_TO_USD);

case "YEN":

return fromQuantity.multiply(YEN_TO_USD);

}

return new BigDecimal(0);

}

ALl值正确传递,它逐步向下到正确的情况(“YEN”),变量窗格显示“fromQuantity”BigDecimal的intCompact值为278(这对我来说很有意义)

YM7ca.png

一旦断点返回到“转换”方法,它就会变得混乱.而不是返回2.78 * 0.008853 = 0.0246,它返回-9223372036854775808.

CZilA.png

这会导致所有其他计算产生和错误.

我是使用BigDecimal的新手,所以我可能会犯一个完全明显的错误;但我很高兴学习,所以我向你们寻求建议:)

任何帮助表示赞赏.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openstack架构详解图_英特尔顶级技术专家合力缔造精品:Linux开源网络全栈详解...

日常水开篇自1991年诞生起,Linux已经走过了接近三十年。Linux早已没有了问世时的稚气,正在各个领域展示自己成熟的魅力。以Linux为基础,也衍生出了各种开源生态,例如网络和存储。而生态离不开形形色色的开源项目,在人人…

java多次点击时事件_click事件的累加绑定,绑定一次点击事件,执行多次

我的github(PS:希望star):https://github.com/thWinterSun/v-admin最近做项目为一个添加按钮绑定点击事件,很简单的一个事情,于是我按照通常做法找到元素,使用jquery的on()方法为元素绑定了点击事件,点击同时发送请求。完成后看效…

基于matlab的fisher线性判别及感知器判别_基于嵌入表示的网络实体对齐方法进展概述...

网络实体对齐是指给定两个网络,把两个网络中等价的实体合并。实体对齐在很多领域都有重要应用,比如,跨平台社交网络的用户对齐可以用于用户画像、用户兴趣挖掘,跨语言知识图谱的实体对齐可以辅助机器翻译、跨语言信息检索。传统的…

mfc指示灯报警显示_奔驰车辆常用指示灯功能讲解

点击箭头处“蓝色字”,关注我们哦!!今天将为大家解析车辆仪表盘指示灯功能,当然,我们为大家带来的是奔驰车型的指示灯解读。奔驰在指示灯上的设计是什么风格呢?下面我们就来带大家详细解读。疲劳驾驶报警指…

java无锁消费者框架_无锁并行框架多生产者多消费者模型

下面看一下多生产多消费者的模式,下面的代码是模拟100个生产者,每个生产者生产100个事件,然后有3个消费者,同时进行消费,共消费1W个事件,下面看一下代码:这边new出了3个消费者,并把消…

win10无法连接到这个网络_电脑无法连接网络怎么办?(有线网络篇)

哈喽!各位小伙伴大家好呀!好久不见,近期真的太多小伙伴咨询网络问题了,没办法,虽然以前写过相关文章,断网、网络卡、慢、掉线的常规解决方法不过可能还不够细致,本篇就尽量把所有的问题都提出解…

LeetCode反转链表java_Leetcode 反转链表系列 图解详细过程

对于一个程序猿来说,数据结构和算法的重要性就不用我多说了吧,算法题已然成了现在大厂笔试面试的重头戏,废话少说,Leetcode 刷起来呀。说起刷 Leetcode,我建议你按 tag 刷,不然只能像无头苍蝇,东…

amd插帧技术如何开启_联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程...

联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程很多情况下可能我们都需要开启CPU虚拟化技术,例如我们需要打开安卓模拟器,在打开安卓模拟器的时候如果提示您需要CPU虚拟化技术,那么我们需要在主板BIOS设置中进行开启,下面…

没有内存条电脑能开机吗_换内存加固态,老电脑也能快到起飞,附纯国产内存条雷赤测评...

我在公司里用的那台电脑是品牌机,配置有点低,处理器是i3-6100,内存是4GB,硬盘是1TB的机械,这个配置日常办公是没有问题的,但是现在有一些活已经超出了这个配置的能力,加之近期的一些工作还需要在…

嵌入式编程要不要学数据结构_少儿编程要不要学?其实国家早就给出了答案……...

随着人工智能的热度不断攀升,少儿编程越来越火,逐渐成为爸妈们的热门话题。自家的孩子适不适合学习少儿编程,很多专业人士发出了各种不同的声音。这也让很多望子成龙的家长一头雾水,分不清究竟该何去何从?那么&#xf…

nrf52840 gpiote如何配置中断输入_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件...

本篇我们继续来学习西门子S7-200 SMART的PID回路控制,首先介绍一下如何配置PID向导。在工具菜单功能区单击PID按钮打开PID回路向导对话框,选择要组态的回路,最多可组态8个回路,这里我们选择回路0。选择回路0在左侧的树视图中单击回…

java 大流量高并发_【BAT面试题】如何应对大流量、高并发??

这是一道BAT大厂的面试题所谓高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。常用的高并发处理的思路与手段从服务端视角看高并发服务端处理请求需要耗费服务端…

创建一个storageevent事件_谈谈StorageEvent

编者按:本文作者 刘观宇,360 奇舞团高级前端工程师、技术经理,W3C CSS 工作组成员。纷纷红紫已成尘,布谷声中夏令新。夹路桑麻行不尽,始知身是太平人。 ——宋.陆游 《初夏绝句》我们在开发多Tab应用时候,常…

matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

matlab应用——求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏&a…

bootstraptable导出excel独立使用_使用 EasyPOI 优雅导出Excel模板数据(含图片)

EasyPOI功能如同名字Easy,主打的功能就是容易,让一个没接触过POI的人员可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出。通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。…

import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观

全文共1803字,预计学习时长10分钟图源:tehrantimes流行 Python 数据分析库 Pandas 中的绘图功能一直是迅速绘制图表的首选之一。但是,其可用的可视化效果总是十分粗略,实用有余、美观不足。笔者常用 Pandas 的绘图功能快速地执行一…

jquery name选择器_jquery笔记

jQuery是一个封装好的特定的集合(方法和函数)。是一个库,封装了很多预先定义好的函数在里面。概念jQuery是一个快速,简洁的js库。j是js,query是查询,把js中的DOM操作作了封装,我们可以快速的查询使用里面的功能。jQuer…

python数据库框架_目前最受欢迎的12个Python开源框架

1 Django Django是一款用Python语言写的免费开源的 Python Web应用开发框架,它遵循模型 -视图-控制器(MVC)的架构模式。它是由非营利Django维护软件基金会(DSF)和3条款BSD许可下可用,鼓励快速发展和实用的设计。Django同时是一款在数据库功能、后台功能、…

jenkins java常用插件下载,Jenkins简单介绍以及插件入门

Jenkins是一个广泛用于持续构建的可视化web工具,就是各种项目的的“自动化”编译、打包、分发部署,将以前编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址,将代码拉取到jenkins宿主机上&#xff0c…

linux安装python3.7的步骤_Linux 安装python3.7.3

我这里使用的是Redhat6.5,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 python --version 查看系统自带的python版本 有一些系统命令时需要用到python2,不能卸载 1、安装依赖包 1&…