系统语言德语时浮点数转化问题

原因

游戏上线后,玩家反馈系统语言为德语时会有问题,经排查测试,发现是德语的浮点数转化,也就是float.parser对于德语来说会有问题。

在中国和英国,表示小数是用 小数点,即:0.123。但是在德国,表示小数则是用 逗号,即 0,123。德国的浮点数没有"."一说。float.Parse(“0.123”),那么读出来的将会是123.

这时候就要讨论C#浮点数的转化原理了。因为C#是面向全球性的应用语言,不同国家有不同的文化,借助CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug。

总结来说,浮点数转化、日期转化都是借助ClutureInfo实现的。

知道了原理,那么就大概知道怎么解决了。

解决

  • 将当前线程影响浮点数的所有格式固定(注意,这样会导致不同时区显示的日期格式等都固定为一种形式)
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
     
  • 强制用"."分隔浮点数
    var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
    culture.NumberFormat.NumberDecimalSeparator = ".";
    float number = float.Parse("0.24", culture);

相关推荐

  1. 系统语言德语点数转化问题

    2024-01-13 06:30:01       37 阅读
  2. 点数精度问题

    2024-01-13 06:30:01       38 阅读
  3. MySQL变量的点数问题处理

    2024-01-13 06:30:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-13 06:30:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-13 06:30:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-13 06:30:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-13 06:30:01       20 阅读

热门阅读

  1. MongoDB聚合:$documents

    2024-01-13 06:30:01       36 阅读
  2. TIDB的忘了root用户密码和数据库密码解决办法

    2024-01-13 06:30:01       23 阅读
  3. 编程笔记 html5&css&js 036 CSS概述

    2024-01-13 06:30:01       27 阅读
  4. 【Elasticsearch】Elasticsearch集群搭建详细手册

    2024-01-13 06:30:01       39 阅读
  5. 给el-select的change事件传自己想要的参数

    2024-01-13 06:30:01       30 阅读
  6. Ubuntu按转发HDF5

    2024-01-13 06:30:01       35 阅读
  7. python类装饰器编写单体类

    2024-01-13 06:30:01       34 阅读
  8. 第一天业务题

    2024-01-13 06:30:01       35 阅读
  9. pytest框架

    2024-01-13 06:30:01       30 阅读
  10. 《设计模式的艺术》笔记 - 工厂方法模式

    2024-01-13 06:30:01       32 阅读
  11. Python pytest入门教程

    2024-01-13 06:30:01       34 阅读
  12. 怎么节约cdn流量- 速盾网络(Sudun)

    2024-01-13 06:30:01       36 阅读