gpt4 book ai didi

c# - 推导十进制数后面的所有字符,前导 0

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:38 26 4
gpt4 key购买 nike

如果我有一个输入字符串,input 有三个或更多小数位,我希望该字符串由单独的 if-loop 处理。

我为此目的创建了以下控制台程序,如果(第一个约束)有小数点 .,则输入 if-loop字符串和(第二个约束)如果小数位数为三或更多。

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();

其中 Row["Price"].ToString(); 是一个来自 XML 文件的值,它也有值 0.065 我从控制台得到以下打印:

(1) 产生 0.065

(2) 产生 -1(应该是 1,因为存在 .)

(3) 产生 0.065(应该是 .065)

和 (4) 没有被打印出来,因为 if constraints 没有被满足。

有人知道这是为什么吗?我是 C# 的新手,但我认为由于 input 在这两种情况下都是 string 类型,所以应该没有任何区别吗?尤其是当我将 ToString() 应用于新的 string input 时?

最佳答案

当您执行 input = Row["Price"].ToString(); 时,将 , 替换为该字符串中的 .

替换函数是input = Row["Price"].ToString().Replace(",", ".");

关于c# - 推导十进制数后面的所有字符,前导 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49025521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com