/// <summary>
/// Get the integer part of any decimal number passed trough a string
/// </summary>
/// <param name="decimalNumber">String passed</param>
/// <returns>teh integer part , 0 in case of error</returns>
private int GetIntPart(String decimalNumber)
{
if(!Decimal.TryParse(decimalNumber, NumberStyles.Any , new CultureInfo("en-US"), out decimal dn))
{
MessageBox.Show("String " + decimalNumber + " is not in corret format", "GetIntPart", MessageBoxButtons.OK, MessageBoxIcon.Error);
return default(int);
}
return Convert.ToInt32(Decimal.Truncate(dn));
}
Public Function getWholeNumber(number As Decimal) As Integer
Dim round = Math.Round(number, 0)
If round > number Then
Return round - 1
Else
Return round
End If
End Function
1.3 x 4 = 5.2 <- NOT a Whole Number!
1 x 343564564.4342 <- NOT a Whole Number!
了解整数是什么很重要!
4 / 1 = 4 <- A Whole Number!
4 / 2 = 2 <- A Whole Number!
4 / 3 = 1.333 recurring <- NOT A Whole Number!
请问,并回答问题,多一点准确窥视...
double A = Math.Abs(343564564.4342);
double B = Math.Floor(343564564.4342);
double C = Math.Ceiling(343564564.4342);
double D = Math.Truncate(343564564.4342);
退货:
A = 343564564.4342
B = 343564564
C = 343564565
D = 343564564
或:
double E = Math.Round(343564564.4342, 0);
E = 343564564
8条答案
按热度按时间yvgpqqbh1#
顺便说一句,(int)Decimal。MaxValue会溢出。你不能得到小数的“int”部分,因为小数太大了,不能放在int框中。刚刚检查了一下. a....它甚至对long(Int 64)来说太大了。
如果希望Decimal值的位位于点的左侧,则需要执行以下操作:
并将值返回为... DECIMAL或DOUBLE。
mqkwyuun2#
我想System.Math.Truncate就是你要找的。
syqv5f0l3#
那要看你在做什么了。
例如:
或
默认值始终是前者,这可能会令人惊讶,但makes very good sense。
您的显式强制类型转换将执行以下操作:
从你对问题的措辞来看,这听起来好像不是你想要的--你每次都想把它说得天花乱坠。
我会这样做:
还要检查您的
decimal
的大小-它们可能相当大,所以您可能需要使用long
。63lcw9qa4#
您只需要将其转换为如下类型:
如果您仍然希望在以后的计算中将其用作小数,那么Math.Truncate(如果您希望负数具有某种行为,则可能是Math.Floor)就是您想要的函数。
pftdvrlh5#
希望能帮到你。
anauzrmj6#
非常简单的方法来分离价值和它的小数部分价值。
s为小数部分= 5,且
i为整数值= 3
slhcrj9b7#
ubof19bj8#
忘了这个词的意思:"整数"在答案和问题中似乎很常见。
从数字得到整数:4很简单:
四舍五入一个数字,以获得一个整数是一个作弊的方法获得整数!四舍五入删除非整数部分的数字!
了解整数是什么很重要!
请问,并回答问题,多一点准确窥视...
退货:
或:
是一个数学函数,因此改变了数字,而不是整数。您的舍入非整数!