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

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

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

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

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

报错如下:

  1. D/AndroidRuntime( 9067): Shutting down VM
  2. E/AndroidRuntime( 9067): FATAL EXCEPTION: main
  3. E/AndroidRuntime( 9067): Process: com.runbo.outdoormeter, PID: 9067
  4. E/AndroidRuntime( 9067): java.lang.NumberFormatException: Invalid float: "1019,35"
  5. E/AndroidRuntime( 9067): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
  6. E/AndroidRuntime( 9067): at java.lang.StringToReal.initialParse(StringToReal.java:164)
  7. E/AndroidRuntime( 9067): at java.lang.StringToReal.parseFloat(StringToReal.java:323)
  8. E/AndroidRuntime( 9067): at java.lang.Float.parseFloat(Float.java:306)
  9. E/AndroidRuntime( 9067): at java.lang.Float.valueOf(Float.java:343)
  10. E/AndroidRuntime( 9067): at com.runbo.outdoormeter.service.DataService.onSensorChanged(DataService.java:66)
  11. E/AndroidRuntime( 9067): at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:405)
  12. E/AndroidRuntime( 9067): at android.os.MessageQueue.nativePollOnce(Native Method)
  13. E/AndroidRuntime( 9067): at android.os.MessageQueue.next(MessageQueue.java:148)
  14. E/AndroidRuntime( 9067): at android.os.Looper.loop(Looper.java:151)
  15. E/AndroidRuntime( 9067): at android.app.ActivityThread.main(ActivityThread.java:5637)
  16. E/AndroidRuntime( 9067): at java.lang.reflect.Method.invoke(Native Method)
  17. E/AndroidRuntime( 9067): at java.lang.reflect.Method.invoke(Method.java:372)
  18. E/AndroidRuntime( 9067): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
  19. E/AndroidRuntime( 9067): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

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

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

运行时,打印日志:

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

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

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

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

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

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

  1. LocationApplication.dangxia_qiya=event.values[0];
  2. Log.i("sensor","senser is running 1.....");
  3. float a1=LocationApplication.dangxia_qiya;
  4. //String aa1=String.format("%.2f",a1);
  5. //Log.i("sensor","a1="+a1);
  6. //Log.i("sensor","aa1="+aa1);
  7. //LocationApplication.dangxia_qiya= Float.valueOf(aa1);
  8. float aa1 = (float)(Math.round(a1*100))/100;
  9. Log.i("sensor","a1="+a1);
  10. Log.i("sensor","aa1="+aa1);
  11. 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. poj 3617 Best Cow Line (字符串反转贪心算法)

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9284   Accepted: 2826 Des ...

  2. 什么是ETag

    ETag 是 Entity Tag 的缩写,中文译过来就是实体标签的意思.在HTTP1.1协议中其实就是请求HEAD中的一个属性而已. HTTP/1.1 200 OK Date: Mon, 23 Ma ...

  3. 关于dbutils中QueryRunner看批量删除语句batch

    //批量删除 public void delBooks(String[] ids) throws SQLException { QueryRunner qr = new QueryRunner(C3P ...

  4. IBATIS中‘$’与‘#’使用

    IBATIS中关于iterate和‘$’与‘#’的应用 一个包含List元素的HashMap参数赋给sqlMap  public int getCountById(String id, String ...

  5. PHP——做服务

    xml的写法和特点 <?xml version='1.0' encoding='utf-8'?><Info><code>c001</code><n ...

  6. 如何执行静默(无人参与)Java 安装?

    http://www.java.com/zh_CN/download/help/silent_install.xml

  7. VC中怎么输入特殊符号(如平方、立方等下标符号)

    同在列表控件里显示汉字一样,直接把输入法里特殊字符放进一个数组里,然后再赋值:CString F[]={"m²","∑","±"," ...

  8. openwrt U盘启动

    参考链接: http://m.blog.csdn.net/blog/zcynical/44892785

  9. 第5步:建立主机间的信任关系(sgdb1、sgdb2)

    5.1 Oracle用户下建立信任 5.11创建.ssh目录 [root@sgdb1 /]# su - oracle [oracle@sgdb1 ~]$ mkdir .ssh       创建一个.s ...

  10. WPF验证之——必填验证

    要事先必填验证,首先要重写ValidationRule类的Validate方法,然后在Binding中指定对应的ValidationRule. 第一步:重写ValidationRule的Validat ...