如果有很多行,如何转换为浮点数?

时间:2013-11-17 21:08:24

标签: c#

我已经反编译了源代码,他们得到了如下的简单错误:

this.SubReport.Top = 77.0 / 16.0;
  

错误18无法将类型'double'隐式转换为'float'。一个   存在显式转换(你错过了吗?   演员?)

解决方案很简单:

this.SubReport.Top = (float)(77.0 / 16.0);
// or 
this.SubReport.Top = 77.0f / 16.0f;

然而,有很多行。除了替换文本之外,清除这些错误的最简单方法是什么?因为这就是我问这个问题的原因,我不想使用键盘和键盘。替换每一个错误,有1000多行。双击错误&用(浮动)围绕数字是我的最后手段。

3 个答案:

答案 0 :(得分:3)

你可以使用Find&替换为RegEx选项

示例:

enter image description here

Input: this.SubReport.Top = 77.0 / 16.0;
Output: this.SubReport.Top = (float)(77.0 / 16.0);

编辑:

此外,您可以使用组将浮动f添加到除投射

之外的值

enter image description here

Input: this.SubReport.Top = 77.0 / 16.0;
Output: this.SubReport.Top = 77.0f / 16.0f;

答案 1 :(得分:2)

尝试自助并使用正则表达式自动执行查找和替换。例如,您可以更改所有分隔:

enter image description here

然后找到其他这样的模式来自动替换它们。

答案 2 :(得分:0)

另一种方法是将Top更改为具有double类型的属性。然后,在属性内部,您可以进行投射。

float _top = 0.0;
double Top
{
    set
    {
        _top = (float)value;
    }
    get
    {
        return _top;
    }
}

您还可以使用Resharper之类的东西来重构访问Top的getter的代码路径,并在其位置引入另一个属性作为浮点类型,在其属性中返回(float)Top。类似的东西:

float FloatTop
{
    get
    {       
        return (float)Top;
    }
}