我正在尝试在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”分配给转换倍数。
答案 0 :(得分:2)
(5 / 1024
)是整数除法。用整数除法:答案为零。告诉它使用浮点:添加小数点:
double convert = 5.0 / 1024;
请注意,它也可能被声明为const
。
答案 1 :(得分:1)
尝试在数字后插入“ D”,这样,编译器可以清楚地标识所需的类型(在这种情况下,文字“ D”代表双精度类型,就像“ M”代表小数)
示例:
double convert = 5d / 1024d;