如何从小数部分取零?

时间:2011-07-22 04:02:11

标签: c#

我有一个senario,我将数字转换为单词并且我已经成功了,但是我找到了一个不起作用的场景。如果我输入的数字为“ 10 ”,则会显示“”。此外,“ 10.2 ”将显示“十点二”。但是,如果我输入“ 10.0 ”,则不会显示为“十点零”。

为了从小数部分中分离整数部分,我通常将数字除以'',但如果输入“ 10.0 ”之类的数字,则字符串数组只包含“ 10 ”而不包含“ 0

我所做的随地吐痰部分如下:

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

4 个答案:

答案 0 :(得分:5)

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

解析它
int tmpInt;
bool isInteger = Int32.TryParse(num.ToString(), out tmpInt);

如果是整数,只需将数字转换为字符串表示,否则保留小数点后的数字,无论使用自定义格式字符串是什么:

 string number = num.ToString("#.0");

如果您的数字小于1,则会出现同样的问题,因此您也可以使用零占位符来表示小数点前的数字:

 string number = num.ToString("#0.0");

另见Custom Numeric Format Strings

答案 1 :(得分:3)

实际上,如果数字,点数会丢失,即使我的数字是Float或Double。 解决方案是对这些数字使用十进制类型,在十进制之后保留0

示例:

Console.WriteLine(Convert.ToString(10.0M));

输出:

10.0

答案 2 :(得分:2)

Febin:

这似乎是一个操作顺序问题。尝试在转换“

之前进行拆分
var parts = ("10.0").Split('.'); //or context.NumberToTranslate

parts[0] //"10"
parts[1] //"0"

//Convert
string[] number = Convert.ToString(parts);

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

答案 3 :(得分:2)

您可以做的一件事就是将您的数字与自身的数字进行比较,以确定是否需要将零添加到您正在生成的字符串中。

有些事情:

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