Math.round
为什么我在set方法中不能使用const WebSocket = require('ws');
const wss = new WebSocket.Server({port: 8080});
wss.on("connection", function connection(ws) {
ws.on('message,', function incoming(message) {
console.log('received: %s', message);
});
ws.send("something");
});
?它说:
论据'#1'无法转换小数?'表达式键入' double'
答案 0 :(得分:3)
Math.Round
适用于十进制,不可为十进制的小数。请改用Math.Round(xposition.Value, 4)
。另请注意,必须将此值指定为有用,或许您打算执行以下操作:
private decimal? xposition;
public decimal? XPosition
{
get
{
return this.xposition;
}
set
{
this.xposition = value.HasValue ? Math.Round(value.Value, 4) : null;
}
}
答案 1 :(得分:2)
Math.Round
返回舍入值,它不会修改传递的值。因此,您必须将返回值分配给后备字段xposition
:
xposition = Math.Round(value, 4);
但是因为它是可空的,你必须处理它可以为空的情况,你必须将其转换为Math.Round
的十进制:
public decimal? XPosition
{
get
{
return this.xposition;
}
set
{
this.xposition = value == null ? (decimal?)null : Math.Round(value.Value, 4);
}
}
答案 2 :(得分:0)
您的代码存在一些问题。
.Value
的{{1}}。decimal
。我会使用这段代码:
null