2

我想制作一个微型计算器,如果你写例如2/3并且你有 0.6666667。我使用 DynamicExpresso.Core 库,但我需要写2f/3f才能获得 0.6666667(如果我写2/3,我会得到 0)。我想我应该使用 somethink likeforCounting = Regex.Replace(forCounting, Regex.Match(forCounting, @"\d+").Value, Regex.Match(forCounting, @"\d+").Value + "f");但它只在第一个数字之后添加 f 。你有什么想法?

4

3 回答 3

1

采用

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"\d+(?:\.\d+)?";
        string substitution = "$0f";
        string input = "Text: 2/3, 1.9";
        string result = Regex.Replace(input, pattern, substitution);
        Console.WriteLine(result);
    }
}

请参阅C# 证明

结果Text: 2f/3f, 1.9f

于 2020-11-29T22:27:35.197 回答
0

从 DynamicExpresso 2.6.0开始,可以设置默认数字类型。
例如,您可以要求它将所有数字视为双精度数,并得到您期望的结果:

var target = new Interpreter();
target.SetDefaultNumberType(DefaultNumberType.Double);

var dbl = target.Eval<double>("2/3");
Console.WriteLine(dbl); // 0.6666666666666666
于 2021-08-28T10:51:29.520 回答
-1

好代码:

forCounting= Regex.Replace(forCounting, @"([0-9.]+)", @"$0f");
于 2020-12-01T08:56:03.337 回答