首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在统一编辑器中工作的计算,但不在我的iPhone上(浮点数中的逗号和点)

在统一编辑器中工作的计算,但不在我的iPhone上(浮点数中的逗号和点)
EN

Stack Overflow用户
提问于 2020-09-02 20:54:12
回答 2查看 308关注 0票数 0

我是这样计算的:

代码语言:javascript
复制
void TESTINGtesting()
{
    string aa = "33,9";
    //float a1 = float.Parse(aa, CultureInfo.InvariantCulture.NumberFormat);
    txt_Slask.text = "(" + aa.ToString() + ") - ";

    float a1 = float.Parse(aa.Replace(',', '.'));

    print("a1: " + a1);

    txt_Slask.text += "++>(";
    txt_Slask.text += a1.ToString();
    txt_Slask.text += ")";
    txt_Slask.text += "<++";
}

我在编辑器中得到以下结果:

当我上传到我的iPhone时,结果如下:

我要做的是:

  1. 以字符串形式读取,格式为"33.9“(点)
  2. ,出来的数字为"33,9”(逗号)--
  3. 作为备份,当我在编辑器上使用附加代码时,试图将"33,9“转换为”33.9“
  4. 是可以的,但iPhone

G 212中的UI文本中没有任何内容。

我试过用"InvariantCulture“,但结果是一样的。

顺便说一下,我的iPhone是瑞典地区。

我感到困惑,一直未能找到解决办法。

EN

回答 2

Stack Overflow用户

发布于 2020-09-02 22:35:52

你似乎在文化中跳舞,你期望从错误的文化中得到什么。

让我们从注释掉的代码开始,我假设这是之前的一次尝试(可以预见)失败了:

代码语言:javascript
复制
string aa = "33,9";
float a1 = float.Parse(aa, CultureInfo.InvariantCulture.NumberFormat);

.Net中不变的区域性是en-us,该区域性中的数字将表示为33.9,而不是33,9。所以你的转换失败了。

然后向编译器抛出一些东西,直到最终得到所需的结果:

代码语言:javascript
复制
float.Parse(aa.Replace(',', '.'))

但是,如果您启用了C#静态分析包,您将在该行上得到警告,表示您需要将区域性传递给函数,因为字符串在不同的区域性中被不同地转换为数字。

具体来说,你提到你的手机是在瑞典文化下,它期望一个逗号作为小数分隔符,你正在用上面的行来替换它。

接下来发生的事情取决于您的框架。我假设会生成一个异常并忽略它,但是您的堆栈已经解除,所以您的函数的其余部分不再运行。

长话短说,对于代码中数字的字符串表示,坚持特定的区域性(不变量很好),每当您对这些字符串进行转换时,使用正确的区域性。

代码语言:javascript
复制
string aa = "33.9";
float a1 = float.Parse(aa, CultureInfo.InvariantCulture);
票数 1
EN

Stack Overflow用户

发布于 2020-09-03 09:41:28

看来我终于解决了这个问题,所以谢谢你的帮助。

代码语言:javascript
复制
void TESTINGtesting()
{
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");

    string aa = "33,9";

    txt_Slask.text = "B(" + aa.ToString() + ") - ";

    aa = aa.Replace(',', '.');
    float a1 = float.Parse(aa); 

    txt_Slask.text += "++>(";
    txt_Slask.text += a1.ToString();
    txt_Slask.text += ")";
    txt_Slask.text += "<++";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63713410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档