如何将此 VB.net 函数转换为 C#?
How to convert this VB.net function to C#?
我用这个 url: http://converter.telerik.com/ 来转换代码。
需要转换为C#的代码:
Dim rand As New Random()
Function MyRandomNumber() As String
Dim min As Decimal = 0.01D
Dim max As Decimal = 9.91D
Dim decimalPlaces = 3
Dim multiplier = CDec(Math.Pow(10, decimalPlaces))
Dim range = (max - min) * multiplier
Dim val = rand.Next(0, CInt(range + 1))
Return (val / multiplier + min).ToString()
End Function
但是当我上次这样做并将其复制到我的 C# 解决方案时,它抛出了错误。
Operator '+' cannot be applied to operands of type 'double' and
'decimal'
有效的转换后的 C# 代码:
private Random rand = new Random();
public string MyRandomNumber()
{
decimal min = 0.01M;
decimal max = 9.91M;
var decimalPlaces = 3;
var multiplier = System.Convert.ToDecimal(Math.Pow(10, decimalPlaces));
var range = (max - min) * multiplier;
var val = rand.Next(0, System.Convert.ToInt32(range + 1));
return (val / (double)multiplier + min).ToString();
}
红色下划线是错误的这一行:
(val / (double)multiplier + min)
正确的转换是:
return (val / multiplier + min).ToString();
与 VB.Net 来源中的完全一致。 double
和 decimal
是不同精度的不同类型;不要在它们之间投射,除非你正在做一些非常非常奇怪的事情。
我用这个 url: http://converter.telerik.com/ 来转换代码。 需要转换为C#的代码:
Dim rand As New Random()
Function MyRandomNumber() As String
Dim min As Decimal = 0.01D
Dim max As Decimal = 9.91D
Dim decimalPlaces = 3
Dim multiplier = CDec(Math.Pow(10, decimalPlaces))
Dim range = (max - min) * multiplier
Dim val = rand.Next(0, CInt(range + 1))
Return (val / multiplier + min).ToString()
End Function
但是当我上次这样做并将其复制到我的 C# 解决方案时,它抛出了错误。
Operator '+' cannot be applied to operands of type 'double' and 'decimal'
有效的转换后的 C# 代码:
private Random rand = new Random();
public string MyRandomNumber()
{
decimal min = 0.01M;
decimal max = 9.91M;
var decimalPlaces = 3;
var multiplier = System.Convert.ToDecimal(Math.Pow(10, decimalPlaces));
var range = (max - min) * multiplier;
var val = rand.Next(0, System.Convert.ToInt32(range + 1));
return (val / (double)multiplier + min).ToString();
}
红色下划线是错误的这一行:
(val / (double)multiplier + min)
正确的转换是:
return (val / multiplier + min).ToString();
与 VB.Net 来源中的完全一致。 double
和 decimal
是不同精度的不同类型;不要在它们之间投射,除非你正在做一些非常非常奇怪的事情。