String转为long 类型报错原因:要转为long必须是int、double、float型[通俗易懂]

遇到该问题的解决办法一:StringstrTime="12.5416132";doubledblTime=Double.parseDouble(strTime); longlngTime=newDouble(dblTime).longValue();log.info("lngTime:"+lngTime);具体报错原因请看下面的例子和解释:上例子:stringa=…

大家好,又见面了,我是你们的朋友全栈君。

遇到该问题的解决办法一:

String strTime = "12.5416132";
double dblTime = Double.parseDouble(strTime);
		
long lngTime = new Double(dblTime).longValue();
log.info("lngTime:"+lngTime);

具体报错原因请看下面的例子和解释:

上例子:

string a =100.1;

long b=long.parse(a);

转换时报 “输入字符串的格式不正确”

当a =100.0 时

long b=long.parse(a,NumberStyles.AllowDecimalPoint);

可以正常转换,

而 a=100.9 时

long b=long.parse(a,NumberStyles.AllowDecimalPoint);

转换失败,报超过Int64的最大值或最小值,

原因解释:

问题一:long是整形也就是Int64类型,parse的对象必须是整形

问题二:

当a =100.0 时

long b=long.parse(a,NumberStyles.AllowDecimalPoint);

这是因为用了NumberStyles.AllowDecimalPoint

指示数字字符串可以具有小数点。 如果 NumberStyles 值包括 AllowCurrencySymbol 标志,分析的字符串包括货币符号,则小数分隔符字符由 NumberFormatInfo. CurrencyDecimalSeparator 属性确定。否则,小数分隔符由 NumberFormatInfo. NumberDecimalSeparator 属性来确定。

实际上是允许有小数点的出现,但作为long,还是不能parse非整数,此时的a是100.00,是可以丢去小数点作为整数的。也就是说long在parse的时候是默认把a处理后当成100来parse的。

问题三:

此时的a变成100.1,同样使用了NumberStyles.AllowDecimalPoint,但这时候long所parse的不再是一个整数,所以会提出异常,超过int64也就是long的范围,对于这个错误,可以先把a=100.1做一个转换变成整形,或者使用范围更广的double或decimal来parse,如decimal.Parse("100.1", NumberStyles.AllowDecimalPoint)

例子和解释来源于点击打开链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128601.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 后端框架有哪些?8个流行的后端框架推荐

    后端框架有哪些?8个流行的后端框架推荐后端框架有哪些?8个流行的后端框架推荐后端框架在选择要使用的后端框架时,有许多选项可用。虽然每个后端框架都有自己的优点和缺点,但在做出最终决定之前,还有一些其他因素需要考虑。在本指南中,我们将仔细研究经过尝试的框架,以确定哪个是最适合您的后端框架。后端vs前端如果您是Web开发世界的新手,后端和前端开发之间的区别可能不那么明显,但是,了解两者之间的区别很重要。以下是前端开发人员与后端开发人员的一些区别。前端开发:前端开发人员在很大程度上负责用户所看到的内容(即网站页面),前端开发人员主要使用HTM

    2022年6月10日
  • C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]

    C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]C++Opencvimfill孔洞填充函数的实现函数实现的中心思想二值图寻找连通域的关键种子点的确定连通域的寻找过程条件设定最后赋值话不多说直接上函数代码主函数代码代码框截图实例图片运行结果函数实现的中心思想二值图此程序针对于二值图,寻找二值图中像素值为0的连通域,将所有连通域的像素点分别保存下来,将符合条件的连通域的像素值置为255;寻找连通域的关键针对填洞功能的实现,也就…

    2022年9月12日
  • Linux Epoll介绍和程序实例

    Linux Epoll介绍和程序实例

    2021年12月2日
  • Java核心技术之什么是泛型

    Java核心技术之什么是泛型没看过官网,不知道类型擦除会产生的问题还敢说自己了解泛型?

    2022年6月16日
  • Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子[通俗易懂]

    Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子[通俗易懂]1、Zigbee协议栈简介  协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发。  如图1所示:Zigbee协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;Zigbee联盟定义了NWK(网络层)、A…

    2022年5月28日
  • AdminLTE Button小结

    AdminLTE Button小结AdminLTEButton小结

    2022年7月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号