博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 类型转换时需要注意的问题
阅读量:5904 次
发布时间:2019-06-19

本文共 947 字,大约阅读时间需要 3 分钟。

hot3.png

近期维护前人留下的 "chongqingdaxue的缴费平台", 前后碰到两次java类型转换的问题, 这样导致的 bug 非常不应该, 应避免.

1. String 转 Integer

代码功能: 从一个 excel 表格读出 count 列的值(count 列的值肯定是整数写入的)

原代码: 从 count 列读出一个 string 值, 再使用 Integer.parseInt(count) 转成 Integer

隐含问题: excel 里会自动对千位以上的数字加上逗号分隔, 如 1234 会转成 1,234, 这时再使用 Integer.parseInt(count) 就会报错

解决方法: 

NumberFormat nf= NumberFormat.getInstance();nf.parse(count).intValue();

思考: 能不能对肯定是整数的列, 进行读取时, 直接以整数读出来, 而不是先读成 String, 再进行转换?

注: 原代码是用 jxl.Workbook 对 excel 进行读取的, 具体读取某一个 cell 时, 是用 jxl.Cell 的 getContents() 函数进行读取的, 看了一遍, 没看到类似  delphi 的OraQuery 里面有直接 AsInteger 这样的函数, 而是只能以 String 读出来后, 再转成 Integer.

 

2. Double 精度问题

代码功能: xingyeyinhang要求其手续费需要以一位精度的小数传递(手续费计算公式为: 缴费金额*0.0002 )

原代码: 直接使用 缴费金额*0.002

隐含问题: 当"缴费金额" 为 100, 500 时, 都不会有问题, 如 500*0.002 会算出 1.0 ; 但如果是 11700.0*0.002 就会算出 23.400000000000002 .

解决方法:

DecimalFormat df = new DecimalFormat("#.0");Double.parseDouble(df.format(chargeFee));

转载于:https://my.oschina.net/zenglingfan/blog/61840

你可能感兴趣的文章
数据批量导入Oracle数据库
查看>>
调用lumisoft组件发邮件 不需要身份验证 不需要密码
查看>>
DW 正则
查看>>
抓屏原理
查看>>
UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出
查看>>
扩展 DbUtility (1)
查看>>
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
查看>>
Apple Developer Registration and DUNS Number Not Accepted
查看>>
Hadoop学习笔记系列文章导航
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>
Prometheus : 入门
查看>>
使用 PowerShell 创建和修改 ExpressRoute 线路
查看>>
在C#中获取如PHP函数time()一样的时间戳
查看>>
Redis List数据类型
查看>>
大数据项目实践(四)——之Hive配置
查看>>
初学vue2.0-组件-文档理解笔记v1.0
查看>>
Centos7安装Gitlab10.0
查看>>
上传图片预览
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>