我这样做的方式类似于以下内容:
from op in Parse.Optional(Parse.Char('-').Token())
from num in Parse.Decimal
from trailingSpaces in Parse.Char(' ').Many()
select decimal.Parse(num) * (op.IsDefined ? -1 : 1);
Run Code Online (Sandbox Code Playgroud)
当然,根据您要解析的内容,忽略trailingSpaces部分。