Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果有很多行,如何转换为浮动?_C# - Fatal编程技术网

C# 如果有很多行,如何转换为浮动?

C# 如果有很多行,如何转换为浮动?,c#,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; 然而,有成吨的线。除了替换文本外,清除这些错误的最简单方法是什么?因为这就是为什么我要问这个问题,

我有反编译的源代码,它们有如下简单错误:

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多行。双击错误&用(float)包围数字是我最后的选择。

另一种方法是将Top更改为具有双精度类型的属性。然后,在属性内部可以进行铸造

float _top = 0.0;
double Top
{
    set
    {
        _top = (float)value;
    }
    get
    {
        return _top;
    }
}
您还可以使用Resharper之类的工具来重构访问getter for Top的代码路径,并在其位置引入另一个属性,作为在其属性中返回(float)Top的浮点类型。比如:

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

另一种方法是将Top更改为具有双精度类型的属性。然后,在属性内部可以进行铸造

float _top = 0.0;
double Top
{
    set
    {
        _top = (float)value;
    }
    get
    {
        return _top;
    }
}
您还可以使用Resharper之类的工具来重构访问getter for Top的代码路径,并在其位置引入另一个属性,作为在其属性中返回(float)Top的浮点类型。比如:

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

试着自己动手,用正则表达式自动查找和替换。例如,可以更改所有分割:


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

试着自己动手,用正则表达式自动查找和替换。例如,可以更改所有分割:


然后查找其他此类模式以自动替换它们。

您可以使用find&replace with RegEx选项

例如:

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


编辑: 您还可以使用组将浮点
f
添加到除铸造以外的值

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


您可以使用“查找并替换为正则表达式”选项

例如:

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


编辑: 您还可以使用组将浮点
f
添加到除铸造以外的值

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


this.SubReport.Top
声明为float。将
this.SubReport.Top
更改为float。您可以将要设置的属性类型更改为
double
,或者在每个数字后面加上
f
77.0f/16.0f
将产生一个浮点数。@mehdi你的意思是
double
。搜索并替换
。SubReport.Top=
。SubReport.Top=(float)
,仔细观察它,这样你就不会意外地在不需要的地方插入石膏。(也就是说,更改属性的类型可能更好。在代码中使用
float
s而不是
double
s很少是一个好主意,除非您与期望
float
s的硬件交互,具体来说,这正是因为C在默认情况下使用
double
s进行浮点计算。)将
this.SubReport.Top
声明为float。将
this.SubReport.Top
更改为float。您可以将要设置的属性类型更改为
double
,或者在每个数字后面加上
f
77.0f/16.0f
将产生一个浮点数。@mehdi你的意思是
double
。搜索并替换
。SubReport.Top=
。SubReport.Top=(float)
,仔细观察它,这样你就不会意外地在不需要的地方插入石膏。(也就是说,更改属性的类型可能更好。在代码中使用
float
s而不是
double
s很少是一个好主意,除非您与期望
float
s的硬件交互,具体来说,这正是因为C在默认情况下使用
double
s进行浮点计算。)看起来不错,我试试看。我们能确认这是分区吗?和/或在更换前是否应在那里?我想我可以添加@kkokosa的Find what input.this应该适用于division
this.SubReport.Top={.+./.+}看起来不错,我试试看。我们能确认这是分区吗?和/或在更换前是否应在那里?我想我可以添加@kkokosa的Find what input.this应该适用于division
this.SubReport.Top={.+./.+}