字符串中的双精度或整数?

Posted

技术标签:

【中文标题】字符串中的双精度或整数?【英文标题】:Double or Integer in string? 【发布时间】:2016-08-19 21:26:33 【问题描述】:

例如在控制台应用程序中,我有以下代码:

Console.Writeline("Enter function");
string function = Console.Readline();

然后function 被定义为:

function = "ceil(5.0)";

然后我将变量定义为双精度值。 但是如果用户输入:

function = "ceil(5)";

如何检查是否有双填或整数,所以我现在如何存储该变量。而且,如果它相同但带有负数,我已经尝试过正则表达式,但也许我做得不对。有什么想法吗?

【问题讨论】:

修改代码解析用户输入的函数检测小数点的存在?当然,如果您能够编写函数解析器,那对您来说应该是小菜一碟? @Heinzi 谢谢我会调查一下,但是如果有例如 5.0 它被识别为双精度,但如果你知道我的意思,它实际上是一个整数 我明白你的意思,但我建议仍然在这种情况下使用双精度:如果你使用诸如 5.0 之类的文字,大多数编程语言都会这样做,并且更改该约定会令人困惑。 【参考方案1】:

对于浮点数,n % 1 == 0 通常是检查小数点后是否有任何内容的方法。

public static void Main (string[] args)

    decimal d = 3.1M;
    Console.WriteLine((d % 1) == 0);
    d = 3.0M;
    Console.WriteLine((d % 1) == 0);

输出:

False //is a double
True //is a integer

更多信息可以在这个页面找到: How to determine if a decimal/double is an integer?

【讨论】:

我认为提问者想要它,检查字符串是否包含双精度或整数。您正在检查双精度数是整数还是包含小数。【参考方案2】:

如果你想使用正则表达式,你可以检查函数+括号+值+关闭_括号。将此作为起点:

ceil\((\-?\d1,(?:.\d1,)?)\)

请注意,Regex 允许负数。如果您不想这样,请删除 \-? 部分。

【讨论】:

以上是关于字符串中的双精度或整数?的主要内容,如果未能解决你的问题,请参考以下文章

格式,Java 中的双精度和整数的 2 位小数和 0

将非常小的双精度值转换为字符串(使用科学计数法)(Java)

如何避免以科学记数法表示的双精度数和数字的字符串到数字转换?

可以存储在 double 中的最大整数

Java - Decimal Format.parse 返回具有指定小数位数的双精度值

C++,如何从字符串中获取正确的双精度值?