当前位置: 首页 > news >正文

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

原因

游戏上线后,玩家反馈系统语言为德语时会有问题,经排查测试,发现是德语的浮点数转化,也就是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);

相关文章:

  • 【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏
  • 2023 年公链发展报告
  • 【升区快刊】IEEE(trans),上涨中科院1区,国人占比75%,质量高,录用快!
  • Pandas十大练习题,掌握常用方法
  • Ubuntu搭建OpenCV环境(C++)
  • 如何配置Pycharm服务器并结合内网穿透工具实现远程开发
  • HTML 链接 图片引入
  • 表单生成器基于(form-create-designer+ant design vue)
  • UniApp+Vue智慧工地信息化管理云平台源码(支持多工地使用)
  • Golang 通道输入输出学习(同刚上手的小新手)
  • 01.16
  • 广告投放场景中ABtest分析的评价、优化和决策建议
  • vs2022配置OpenCV测试
  • 注意!不清楚这些,2024上半年软考别轻易尝试!
  • 【好书推荐-第四期】《Go专家编程(第2版)》华为资深技术专家力作,第1版评分9.4,适合Go程序员面试
  • 2017-08-04 前端日报
  • bearychat的java client
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript编码规范
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • LeetCode18.四数之和 JavaScript
  • Netty源码解析1-Buffer
  • python大佬养成计划----difflib模块
  • redis学习笔记(三):列表、集合、有序集合
  • spring boot下thymeleaf全局静态变量配置
  • Sublime text 3 3103 注册码
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue-router 实现分析
  • 基于组件的设计工作流与界面抽象
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 浏览器缓存机制分析
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数组大概知多少
  • 提醒我喝水chrome插件开发指南
  • 微信小程序设置上一页数据
  • 一道闭包题引发的思考
  • const的用法,特别是用在函数前面与后面的区别
  • hi-nginx-1.3.4编译安装
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (十六)一篇文章学会Java的常用API
  • (五)网络优化与超参数选择--九五小庞
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core引入性能分析引导优化
  • .net反混淆脱壳工具de4dot的使用
  • .net连接oracle数据库
  • .NET下的多线程编程—1-线程机制概述
  • ?
  • @requestBody写与不写的情况
  • @selector(..)警告提示
  • [ 手记 ] 关于tomcat开机启动设置问题