C# 推导十进制数后面的所有字符,前导0';s
如果我有一个输入字符串,输入有三个或更多的小数。我希望字符串由一个单独的C# 推导十进制数后面的所有字符,前导0';s,c#,string,output,C#,String,Output,如果我有一个输入字符串,输入有三个或更多的小数。我希望字符串由一个单独的If循环处理 为此,我创建了以下控制台程序,其中如果(第一个约束)有一个小数点,在字符串中,如果小数点的数量是三个或更多,则输入if循环 using System; namespace Test { class Program { static void Main(string[] args) { string input = "0.065";
If循环处理
为此,我创建了以下控制台程序,其中如果(第一个约束)有一个小数点,
在字符串中,如果小数点的数量是三个或更多,则输入if循环
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
string input = "0.065";
string output;
Console.WriteLine(input.ToString()); // (1)
Console.WriteLine(input.ToString().IndexOf(".")); // (2)
Console.WriteLine(input.ToString().Substring(input.ToString().IndexOf("."))); // (3)
if (Convert.ToInt32(input.IndexOf('.')) != -1 &&
Convert.ToInt32(input.Substring(input.IndexOf('.') + 1).Length) >= 3)
{
output = input.Substring(input.IndexOf('.') + 1);
Console.WriteLine(Convert.ToInt32(output));
}
Console.ReadLine();
}
}
}
这将产生预期的结果,即
(1) 打印0.065
(2) 打印1
(3) 打印.065
和(4)打印3
我的问题是,当我删除硬编码字符串值时,input=“0.065”
并将其替换为
input = Row["Price"].ToString();
其中行[“价格”].ToString()
是XML文件中的一个值,它也有值0.065
我从控制台获得以下打印:
(1) 收益率0.065
(2) 产生-1
(应为1,因为存在
)
(3) 收益率0.065
(应为.065
)
和(4)未打印,因为未满足if约束
有人知道这是为什么吗?我是C#新手,但我认为既然input
在这两种情况下都是string
类型,那么应该没有什么区别吧?尤其是当我将ToString()
应用到新的字符串输入时
在执行input=Row[“Price”]操作时,将该字符串中的,
替换为,
代码>
Replace函数是input=Row[“Price”].ToString().Replace(“,”,”)代码>行[“价格”]。ToString();是XML文件中的值
,显然与从XML读取的内容不同。请将读取该值的代码以及行
是什么?是否确定没有,而不是一个。在该字符串中,您可以input=Row[“Price”].ToString()代码>这意味着你的输入不包含“.”字符,即使你认为它包含“.”字符。也许它包含逗号而不是点,或者其他东西-我们无法理解它。只需执行Console.WriteLine(Row[“Price”].ToString())
并查看您自己。可能您的Row[“Price”]包含一个带有“,”的数值,作为分隔符,而不是“。@k.Lennartz我打印了输入,我没有看到,
,但看到了
。但是当我做了input=Row[“Price”].ToString().Replace(“,”)
之后,它就工作了,因为它们看起来非常相似(我的真实打印使用了一个粗体打印的函数,因此、
和
之间的区别更加微妙。有三个人建议了这一点,但既然你是第一个,我相信如果你把你的评论作为回答,我会接受的。