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

这篇具有很好参考价值的文章主要介绍了系统语言德语时浮点数转化问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原因

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

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

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

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

知道了原理,那么就大概知道怎么解决了。文章来源地址https://www.toymoban.com/news/detail-794177.html

解决

  • 将当前线程影响浮点数的所有格式固定(注意,这样会导致不同时区显示的日期格式等都固定为一种形式)
    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);

到了这里,关于系统语言德语时浮点数转化问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言实例:输出浮点数和双精度浮点数的四种函数

    C语言中有多种函数可以用来输出浮点数,常见的有printf()、puts()、putchar()、fputs()等。下面是具体的实例: 在C语言中,%f是用来格式化输出浮点数的占位符。例如,printf(“浮点数为:%fn”, num); 中的%f表示输出变量num的值并按照浮点数格式进行显示。 输出结果: 输出结果:

    2024年02月15日
    浏览(30)
  • C语言中的浮点数存储

    首先明确一个概念:C语言中整形是按照二进制存储在内存中,浮点型是按科学计数法存储在内存中(本质上存储的还是二进制数据0和1)。 如果没看懂这句话,没关系!看完以下正文,你就会豁然开朗!并且预先提出两个问题: 1)为什么浮点型不能执行位运算? 2)浮点型

    2024年01月19日
    浏览(29)
  • 游戏开发的最佳编程语言及免费引擎推荐

    游戏至今仍然是人们重要的娱乐方式之一,那么哪种编程语言最适合游戏开发呢?这取决于要开发的游戏类型。例如,如果你想开发一个2D平台游戏,Lua脚本和JavaScript这样的语言比较方便。但是,如果想要开发大型3D第一人称射击游戏,那么用C++或C#之类的语言更加合适。 游

    2024年02月12日
    浏览(44)
  • C++浮点数精度问题

    C++ 默认有效位数为 6 位,指数位和小数位共享。超过有效位数时,只输出前 6 位,且第六位四舍五入运算。 当 整数位超过有效位数后,自动变为科学计数法输出。 该函数用于切换有效位数的判断逻辑,未使用时指数位和小数位共享有效位数,使用后变为小数位独享。 该函

    2024年02月05日
    浏览(38)
  • C语言中的float(单精度浮点数)

    本文主要记录一下Float的一些基础知识。 在计算机界,有个规定叫IEEE754,它规定了如何以二进制的方式来存储10进制的数。 按照这个规定,单精度浮点数(float)这个数据类型所占内存大小为4个字节,也就是32位,所以单精度浮点数也叫32位浮点数,它在内存或硬盘中要占用

    2024年02月07日
    浏览(29)
  • C语言如何输出浮点数及设置保留小数位数

    C语言中一般用(float)和(double)数据类型来定义浮点数,float是单精度浮点数,占内存大小四个字节也就是32个比特位;double是双精度浮点数,占内存大小八个字节也就是64个比特位。一般使用printf()函数来输出浮点数。 保留浮点位数只需要在输出函数的转义字符中插入小

    2024年04月09日
    浏览(24)
  • 【C语言】你知道浮点数是怎么存储的吗?

    前言 🎈 大家好,我是何小侠 🎈 🍃 大家可以叫我 小何或者小侠 🍃 💐 希望能通过写博客加深自己对于学习内容的理解 💐 🌸 也能帮助更多人理解和学习 🌸 积学以储宝,酌理以富才— 出自《文心雕龙·神思》 解释:积累学识来储存珍宝,要斟酌辨析各种事理来丰富增

    2024年02月16日
    浏览(28)
  • 驱动开发:内核读写内存浮点数

    如前所述,在前几章内容中笔者简单介绍了 内存读写 的基本实现方式,这其中包括了 CR3切换 读写, MDL映射 读写, 内存拷贝 读写,本章将在如前所述的读写函数进一步封装,并以此来实现驱动读写内存浮点数的目的。内存 浮点数 的读写依赖于 读写内存字节 的实现,因为

    2024年02月06日
    浏览(42)
  • JavaScript 浮点数运算的精度问题

    来源:https://zhuanlan.zhihu.com/p/191395766 在 JavaScript 中整数和浮点数都属于  Number  数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印  1.00  这样的浮点数的结果是  1  而非  1.00  。在一些特殊的数值表示中,例如金额,这样看上去有点变

    2024年02月08日
    浏览(34)
  • 【小程序】解决浮点数精度损失问题

    最近在做开发的时候出现了老生常谈的问题:浮点数精度损失。只不过之前是Python环境下的,如今是JS环境。 举几个🌰 在Python环境下,我们可以使用默认的库decimal来完成精确计算 但是js环境呢?查了一下,js自身没有decimal这样的库,查了一下,有博文说可以先将浮点数扩大

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包