VB.NET代码:
Module Module1
Sub Main()
Dim x, y As Single
x = 0 + (512 / 2 - 407) / 256 * 192 * -1
y = 0 + (512 / 2 - 474) / 256 * 192
Console.WriteLine(x.ToString + ": " + y.ToString)
Console.ReadLine()
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
返回:113,25:-163,5
C#代码:
class Program
{
static void Main(string[] args)
{
float x, y;
x = 0 + (512 / 2 - 407) / 256 * 192 * -1;
y = 0 + (512 / 2 - 474) / 256 * 192;
Console.WriteLine(x + ": " + y);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
返回0:0
我不明白,会很感激解释.
Phi*_*unt 18
C#/执行整数除法,截断小数部分.VB.NET隐式转换为Double.
要执行浮点除法,请转换为浮点类型:
static void Main(string[] args)
{
float x, y;
x = 0 + (512 / 2 - 407) / (float)256 * 192 * -1;
y = 0 + (512 / 2 - 474) / (float)256 * 192;
Console.WriteLine(x + ": " + y);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
C#文字喜欢0和512属于类型int.Any int/int(int除以int)导致整数除法,它会丢弃任何小数余数,从而失去精度.如果你使用浮动文字象0F代替0和512F代替的512,那么C#将执行浮点除法,这将保留小数部分.
static void Main(string[] args)
{
float x, y;
x = 0F + (512F / 2F - 407F) / 256F * 192F * -1F;
y = 0F + (512F / 2F - 474F) / 256F * 192F;
Console.WriteLine(x + ": " + y);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |