C# 如何使用格式字符串从十进制中获取整数?
按照 “D”(或十进制)格式说明符将数字转换为字符串 十进制数字(0-9),如果数字为 消极的只有整数类型才支持此格式 所以它支持整数类型 但是,它不适用于十进制C# 如何使用格式字符串从十进制中获取整数?,c#,.net,C#,.net,按照 “D”(或十进制)格式说明符将数字转换为字符串 十进制数字(0-9),如果数字为 消极的只有整数类型才支持此格式 所以它支持整数类型 但是,它不适用于十进制 var val = 1234.00M; // line below throws exception `Format specifier was invalid.` string.Format("{0:D}", val); // line below throws exception `Format specifier was i
var val = 1234.00M;
// line below throws exception `Format specifier was invalid.`
string.Format("{0:D}", val);
// line below throws exception `Format specifier was invalid.`
val.ToString("D");
但是,如果我将val
类型从decimal
更改为integer
,则它可以工作
问题十进制不是整数类型吗?
如何从小数中只得到整数部分?(我知道我可以用Math.Truncate(val)来做,但我在看是否可以用
DataFormatString
来做)D
用于整数类型-整数、长等。使用F0
表示定点,小数点后有0位
十进制不是整数类型吗
Decimal不是整数类型。Decimal是一种浮点类型
我怀疑你不知道“积分”这个词是什么意思。“整数”是整数:0,1,2,3及其负数,-1,-2,-3,依此类推。它们没有小数部分
小数被称为“小数”,因为它们包含一个小数部分,其底部的幂为10,因此称为“小数”,即10
因此小数不是整数类型。C#中的整数类型定义为int
,uint
,long
,ulong
,short
,ushort
,byte
和sbyte
“正常”浮点--双精度
和浮点
--底部有一个二次幂的小数部分。这些是“二进制”浮动
如何从小数中只得到整数部分?(我知道我可以使用Math.Truncate(val)来完成,但我正在寻找是否可以使用DataFormatString来完成)
因为decimal是浮点类型,所以可以使用定点类型说明符,F
。有关详细信息,请参阅文档
您可能想知道“定点”和“浮点”之间有什么区别decimal
、double
和float
都具有分数底部可以变化的属性,即“float”。也就是说,小数可以是123.45
或123.456
或123.456789
。文档将格式化程序称为“定点”格式化程序,因为一旦你说出小数点后有多少位,你就会得到多少位。如果您在123.45
上使用F3
,您将得到123.450
;名额是“固定”的
如何从小数中只得到整数部分?(我知道我可以使用Math.Truncate(val)来完成,但我正在寻找是否可以使用DataFormatString来完成)
可以指定格式字符串中所需的小数位数。如果放置0
表示显示数字或显示0(换言之,在此占位符中显示某些内容),如果使用#
表示显示这么多有效数字(如果有更多有效数字,则数字将四舍五入到这么多数字)。如果不包含小数点,则只显示数字部分:
decimal x = 123.45M;
Console.WriteLine(x.ToString("0")); // Output: 123
Console.WriteLine(x.ToString("0.0")); // Output: 123.5 <- note there is rounding
Console.WriteLine(x.ToString("0.00")); // Output: 123.45
Console.WriteLine(x.ToString("0.000")); // Output: 123.450
Console.WriteLine(x.ToString("#.###")); // Output: 123.45
从小数中获取整数部分的另一种方法是将其转换为整数:
int wholeNumberPart = (int)1.9999M; // result is '1'
此格式仅支持整数类型。-整数类型是整数
int wholeNumberPart = (int)1.9999M; // result is '1'