分裂浮动

时间:2011-12-13 22:14:27

标签: c# algorithm optimization

我有一个浮点数= 1.30452F

对于我的WPF UI,我需要将float分成三部分:

  • 第1部分:1.30
  • 第2部分:45
  • 第3部分:2

一个有效的解决方案是:

float myFloat = 1.30452F;

string part1 = myFloat.ToString("0.00");
string part2 = myFloat.ToString().Substring(4,2);
string part3 = myFloat.ToString().Substring(6);

有没有人有更强的高性能优雅分割浮动的方式?

1 个答案:

答案 0 :(得分:4)

略有改进(尽管使用相同的方法)会减少您的字符串操作。我运行你的原始代码100万次,并在它上面做了一个计时器,它是〜890ms。这种变化降至328毫秒。一个不错的改进。

string myString = myFloat.ToString();
string part1 = myString.Substring(0, 4);
string part2 = myString.Substring(4, 2);
string part3 = myString.Substring(6);

我认为你想要的不仅仅是part1的前4个字符。这是一个数学版本。这个运行在31ms而不是。

float part1 = (int)(myFloat * 100F) / 100F;
int part2 = (int)((myFloat - part1) * 10000F);
int part3 = (int)((myFloat - part1 - (part2 / 10000F)) * 100000);