字符串中的双精度或整数?
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)
如何避免以科学记数法表示的双精度数和数字的字符串到数字转换?