声明双精度时无法分配商的值

时间:2018-06-29 21:41:54

标签: c#

我正在尝试在C#中声明一个具有商值的double。它似乎不起作用...

static void Main(string[] args)
{
    double rawValue;
    double convert = 5 / 1024; // Assigns value of 0
    double convValue;
    string read;

    SerialPort sp = new SerialPort("COM3"); // Creates COM port 
    sp.BaudRate = 9600;
    sp.Open();

    for (;;)            
    {
        read = sp.ReadLine();
        rawValue = Convert.ToDouble(read);
        convValue = rawValue * convert;
        Console.WriteLine(Math.Round(convValue, 2));
    }
}

这将继续为变量“ convert”分配值0,而不是0.0048828125。

我正在串行读取中使用它,将10位整数转换回电压...

$ gql2ts schema.json

串行读取工作正常;我可以在控制台上读写0-1023号,然后手动对其进行转换。我只是无法将表达式“ 5/1024”分配给转换倍数。

2 个答案:

答案 0 :(得分:2)

5 / 1024)是整数除法。用整数除法:答案为零。告诉它使用浮点:添加小数点:

double convert = 5.0 / 1024;

请注意,它也可能被声明为const

答案 1 :(得分:1)

尝试在数字后插入“ D”,这样,编译器可以清楚地标识所需的类型(在这种情况下,文字“ D”代表双精度类型,就像“ M”代表小数)

示例:
double convert = 5d / 1024d;