分裂浮动

本文关键字:分裂 | 更新日期: 2023-09-27 18:17:51

我有一个float = 1.30452F

对于我的WPF UI,我需要将浮动分成三个部分:

  • 第1部分: 1.30
  • 第二部分: 45
  • 第三部分: 2

一个可行的解决方案是:

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

有没有更性能的优雅的分割浮点数的方法?

分裂浮动

稍微改进一下(尽管使用相同的方法)将减少字符串操作。我将你的原始代码运行了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);