今天接到一个波兰的客户说有个APP在英文状态下一切运行正常,但是当系统语言切换到波兰语言的时候,程序奔溃了。好吧,又是我来维护。

好吧,先把系统语言切换到波兰语,切换到波兰语的方法查看文章

我的Android进阶之旅------>Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项

地址:http://blog.csdn.net/ouyang_peng/article/details/50209789

====================================================================================

报错如下:

D/AndroidRuntime( 9067): Shutting down VM
E/AndroidRuntime( 9067): FATAL EXCEPTION: main
E/AndroidRuntime( 9067): Process: com.runbo.outdoormeter, PID: 9067
E/AndroidRuntime( 9067): java.lang.NumberFormatException: Invalid float: "1019,35"
E/AndroidRuntime( 9067): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
E/AndroidRuntime( 9067): at java.lang.StringToReal.initialParse(StringToReal.java:164)
E/AndroidRuntime( 9067): at java.lang.StringToReal.parseFloat(StringToReal.java:323)
E/AndroidRuntime( 9067): at java.lang.Float.parseFloat(Float.java:306)
E/AndroidRuntime( 9067): at java.lang.Float.valueOf(Float.java:343)
E/AndroidRuntime( 9067): at com.runbo.outdoormeter.service.DataService.onSensorChanged(DataService.java:66)
E/AndroidRuntime( 9067): at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:405)
E/AndroidRuntime( 9067): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AndroidRuntime( 9067): at android.os.MessageQueue.next(MessageQueue.java:148)
E/AndroidRuntime( 9067): at android.os.Looper.loop(Looper.java:151)
E/AndroidRuntime( 9067): at android.app.ActivityThread.main(ActivityThread.java:5637)
E/AndroidRuntime( 9067): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 9067): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime( 9067): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
E/AndroidRuntime( 9067): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

好吧,数字格式异常,java.lang.NumberFormatException: Invalid float: "1019,35" ,怎么浮点型1019.35就变成了1019,35   小数点(".")变成了逗号(“,”)。查看源代码,代码如下:

LocationApplication.dangxia_qiya=event.values[0];
Log.i("sensor","senser is running 1.....");
float a1=LocationApplication.dangxia_qiya;
String aa1=String.format("%.2f",a1);
Log.i("sensor","a1="+a1);
Log.i("sensor","aa1="+aa1);
LocationApplication.dangxia_qiya=Float.valueOf(aa1);

运行时,打印日志:

C:\Documents and Settings\Administrator>adb logcat -s sensor
--------- beginning of system
--------- beginning of main
I/sensor ( 8175): senser is running 1.....
I/sensor ( 8175): a1=1019.00757
I/sensor ( 8175): aa1=1019,01

这说明,得到的a1参数是正常的,只是通过String.format方法转换后,就变成了1019,01。坑爹啊!将系统语言切换为英文,再打印下日志,如下:

C:\Documents and Settings\Administrator>adb logcat -s sensor
--------- beginning of system
--------- beginning of main
I/sensor ( 8648): senser is running 1.....
I/sensor ( 8648): a1=1019.01685
I/sensor ( 8648): aa1=1019.02

好吧,得到的a1参数是正常的,aa1也是正常的1019.02。

====================================================================================

好吧,看了代码后,感觉用String.format来格式化浮点型数字真心不给力。这个保留小数点后两位的问题还是用其他方法来解决吧。将代码改成下面代码后一切正常。

LocationApplication.dangxia_qiya=event.values[0];
Log.i("sensor","senser is running 1.....");
float a1=LocationApplication.dangxia_qiya;
//String aa1=String.format("%.2f",a1);
//Log.i("sensor","a1="+a1);
//Log.i("sensor","aa1="+aa1);
//LocationApplication.dangxia_qiya= Float.valueOf(aa1);
float aa1 = (float)(Math.round(a1*100))/100;
Log.i("sensor","a1="+a1);
Log.i("sensor","aa1="+aa1);
LocationApplication.dangxia_qiya=aa1;

====================================================================================

不知道String.format()这样的错误,是不是java设计时候的一个缺陷呢?

====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

====================================================================================

我的Android进阶之旅------>Java字符串格式化方法String.format()格式化float型时小数点变成逗号问题的更多相关文章

  1. 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)

    Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...

  2. 我的Android进阶之旅------>Java全角半角的转换方法

    一中文全角和半角输入的区别 1全角指一个字符占用两个标准字符位置 2半角指一字符占用一个标准的字符位置 3全角与半角各在什么情况下使用 4全角和半角的区别 5关于全角和半角 6全角与半角比较 二转半角 ...

  3. 我的Android进阶之旅------>解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug

    1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的 ...

  4. 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:

    我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...

  5. 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  6. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

  7. 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  8. 我的Android进阶之旅------>关于调用Webservice查询火车票时刻表的几个接口介绍

    今天发现一个可以提供火车票时刻表查询的WebService,先记录下来以后如果写一个火车票时刻表查询的Android App的话就用的着.首先该WebService的的名字是TrainTimeWebS ...

  9. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

    在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...

随机推荐

  1. 查看selinux的状态

    sh-4.1# getenforce Disabled sh-4.1# getenforce Disabled 永久方法 – 需要重启服务器 修改/etc/selinux/config文件中设置SEL ...

  2. SPI—读写串行 FLASH

    SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC. LCD ...

  3. c# 文件操作 txt、xml、ini

    1. txt文件 /// <summary> /// 读文本文件信息 /// </summary> /// <param name="FilePath" ...

  4. HLJU 1042 Fight (种类并查集)

    1042: Fight Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 26  Solved: 8 [Submit][Status][pid=1042& ...

  5. nginx中,$request_uri和$uri的区别

    nginx中,$request_uri和$uri的区别   $request_uri This variable is equal to the *original* request URI as r ...

  6. centos7 mysql 5.7 官网下载tar安装

    https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下载好上传到服务器,解压后以此安装 libs,client,server三个rpm r ...

  7. 每隔10秒自动更新svn 定时更新svn 脚本

    任务: */1 * * * * /opt/adobe/fms/webroot/api/svn.sh 这个命令的问题:只更新了版本号,没有更新实际内容,但是直接运行上面shell脚本能更新. 解决:需要 ...

  8. 使用jmeter实现对jar包的调用

    一.前言 在我们测试接口的过程中,可能有时需要用到第三方jar包来生成一些测试数据(如有时需要对参数的输入值使用第三方jar包进行加密操作),涉及到这种的情况,普遍做法是:手动调用jar包获得需要的值 ...

  9. tree的使用

    //html <ul id="tree"></ul>  js function initTree() { $('#tree').tree({ url: '/ ...

  10. 【Raspberry Pi】crontab 定时任务

    在linux上做定时任务一般用crond 两种方法上文已列,但昨天写的crond命令却一直都没有运行,上网查,有说是环境变量的,也有说是时间问题的,都改过,但还没有效. 今天再次认真读了一遍cront ...