Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从小数部分取零?_C# - Fatal编程技术网

C# 如何从小数部分取零?

C# 如何从小数部分取零?,c#,C#,我有一个senario,我正在将数字转换成文字,我在其中取得了成功,但我发现有一个场景它不起作用。如果我将数字输入为“10”,它将显示“10”。此外,“10.2”将显示“10点2”。但是,如果我输入“10.0”,它将不会显示为“十点零” 为了将整数部分与小数部分分开,我通常将数字除以“”,但是如果我输入像“10.0”这样的数字,字符串数组将只包含“10”而不包含“0” 我所做的吐痰部分如下: string[] number = Convert.ToString(context.NumberToT

我有一个senario,我正在将数字转换成文字,我在其中取得了成功,但我发现有一个场景它不起作用。如果我将数字输入为“10”,它将显示“10”。此外,“10.2”将显示“10点2”。但是,如果我输入“10.0”,它将不会显示为“十点零”

为了将整数部分与小数部分分开,我通常将数字除以“”,但是如果我输入像“10.0”这样的数字,字符串数组将只包含“10”而不包含“0

我所做的吐痰部分如下:

string[] number = Convert.ToString(context.NumberToTranslate).Split('.');

要测试您的数字是否为不带小数点的整数,您可以尝试用

int tmpInt;
bool isInteger = Int32.TryParse(num.ToString(), out tmpInt);
如果是整数,只需将数字转换为字符串表示形式,否则无论使用何种自定义格式字符串,都要保留小数点后的数字:

 string number = num.ToString("#.0");
如果您的数字小于1,则会出现相同的问题,因此您也可以使用小数点前的数字的零占位符:

 string number = num.ToString("#0.0");
另请参见Febin:

这似乎是一个操作顺序问题。尝试在转换之前进行拆分“


你不必完全打破它,但我这样做是为了表明你可以拆分“10.0”,然后用它做你想做的事情。

事实上,如果数字,即使是我,数字是浮点数或双精度数,点后的数字也会丢失。 解决方法是对这些数字使用decimal类型,它保留小数点后的0

例如:

Console.WriteLine(Convert.ToString(10.0M));
输出:

10.0

您可以做的一件事是将数字本身与整数进行比较,以确定是否需要在生成的字符串中附加零

大致如下:

var n = 10.0f;
if(n == (int)n) {
   Console.WriteLine("zero"); 
}

NumberToTranslate的类型是什么?请确保使用Decimal.TryParse()将输入转换为数字。Decimal类型保留尾随的零。如果NumberToTranslate的类型为double,则没有解决方案。但这只适用于小数点后的1位数字,不超过该数字。。如
(10.01)。ToString(#.0”)
将只给出
10.0
。因此不是完美的解决方案。它还可以进行舍入too@Shekar_Pro:是的,我想你必须知道你要用多少位数字,这是一个缺点你已经把数字作为字符串了,所以很明显分割会起作用。但是这里OP使用实数并转换它为分割而串线。
var n = 10.0f;
if(n == (int)n) {
   Console.WriteLine("zero"); 
}