如何修剪“0”在我对双变量进行模1后

时间:2013-10-24 17:45:44

标签: c#

大家好,标题是我要修剪" 0。"在我对双变量

进行模1后

示例:

double Number;
Number = Convert.ToDouble(Console.ReadLine());        //12.777
test = Number % 1;                                    //0.777

我希望我的输出为:777 只用数学而不用 字符串修剪等...

谢谢大家!! 并在c#中

5 个答案:

答案 0 :(得分:2)

这只是ToString的格式。请查看您的所有选项here

怎么样

.ToString(".###");

答案 1 :(得分:2)

不使用任何字符串函数!

while(Math.Round(Number-(int)Number,1)!=1)
{
    Number=Number/0.1;
    if(Number-(int)Number==0)break;//To cover edge case like 0.1 or 0.9
}

注意:数字应为double类型!

答案 2 :(得分:1)

如果我从字面上理解你的问题,那么你也不想要小数点,所以.ToString(".###")不会得到你想要的东西,除非你删除第一个字符(这是字符串操作,你说你不想要那个。)

如果你想在一个数字变量(不是一个字符串)中777,那么你可以将你的结果乘以1000,但我不知道你是否总是在小数点后总是有3位数字

最简单的方法就是使用字符串操作。 ToString没有任何格式化的结果,然后获取小数点后面的子字符串。例如:

var x = (.777d).ToString();
var result = x.SubString(x.IndexOf('.') + 1);

答案 3 :(得分:0)

你当然在寻找: -

.ToString(".###");

正如Marc在评论中正确指出的那样,你应该把所有东西都放在一个字符串中,因为如果输出的是0.777,因为它实际上是存储在内部的,你会得到8个随机字节。

这样的事情: -

var num = (.777d).ToString();
var result = num.SubString(num.IndexOf('.') + 1);

答案 4 :(得分:0)

执行此操作的最通用方法是:

using System.Globalization;


var provider = NumberFormatInfo.InvariantInfo;

var output = test.ToString(".###", provider)
             .Replace(provider.NumberDecimalSeparator, String.Empty);

您还可以在自定义NumberDecimalSeparator上设置NumberFormatInfo,但如果将其设置为空,则会抛出异常“十进制分隔符不能为空字符串。”