大家好,标题说我要修剪“0”。在我对双变量进行模1之后
例子:
double Number;
Number = Convert.ToDouble(Console.ReadLine()); //12.777
test = Number % 1; //0.777
我希望我的输出是:777 只使用没有字符串修剪的数学,所以......
谢谢你们 !!请在 c# 中
大家好,标题说我要修剪“0”。在我对双变量进行模1之后
例子:
double Number;
Number = Convert.ToDouble(Console.ReadLine()); //12.777
test = Number % 1; //0.777
我希望我的输出是:777 只使用没有字符串修剪的数学,所以......
谢谢你们 !!请在 c# 中
Without using any string functions!
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
}
NOTE: Number should be of double
type!
如果我从字面上理解你的问题,那么你也不想要小数点,所以.ToString(".###")
不会得到你想要的,除非你删除第一个字符(这是字符串操作,你说你也不想要那个)。
如果您想要777
一个数字变量(不是字符串),那么您可以将结果乘以 1000,但我不知道您是否总是在小数点后精确地保留 3 位数字。
最简单的方法实际上就是使用字符串操作。ToString
结果没有任何格式,然后得到小数点后开始的子字符串。例如:
var x = (.777d).ToString();
var result = x.SubString(x.IndexOf('.') + 1);
你肯定在寻找这个:-
.ToString(".###");
正如 Marc 在评论中正确指出的那样,您应该将所有内容都放在一个字符串中,因为如果您输出 0.777,因为它确实存储在内部,您将获得 8 个随机字节。
像这样的东西: -
var num = (.777d).ToString();
var result = num.SubString(num.IndexOf('.') + 1);
最通用的方法是:
using System.Globalization;
var provider = NumberFormatInfo.InvariantInfo;
var output = test.ToString(".###", provider)
.Replace(provider.NumberDecimalSeparator, String.Empty);
您也可以NumberDecimalSeparator
在自定义上设置NumberFormatInfo
,但如果将其设置为空,则会抛出异常“小数分隔符不能为空字符串”。