将字符串中的数字替换为数字 + "f"

Replace numbers in string to numbers + "f"

我想做一个微型计算器,如果你写 2/3 并且你有 0.6666667。我使用 DynamicExpresso.Core 库,但我需要编写 2f/3f 以获得 0.6666667(如果我编写 2/3 我得到 0) .我想我应该使用像 forCounting = Regex.Replace(forCounting, Regex.Match(forCounting, @"\d+").Value, Regex.Match(forCounting, @"\d+").Value + "f"); 这样的东西,但它只在第一个数字后添加 f。你有什么想法吗?

使用

using System;
using System.Text.RegularExpressions;

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

参见C# proof

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

好的代码:

forCounting= Regex.Replace(forCounting, @"([0-9.]+)", @"[=10=]f");

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

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

var dbl = target.Eval<double>("2/3");
Console.WriteLine(dbl); // 0.6666666666666666