从double结果中获取舍入值

时间:2010-11-13 18:55:49

标签: c# asp.net rounding

我想在两个文本框中显示计算的净额

如果netamount = 45.60

第一个文本框应显示舍入值和  下一个文本框应该显示舍入的内容。

我之前用c手动程序进行四舍五入,现在我的经理不希望我这样做,因为他认为c#在构建函数中具有所有数学。所以请帮助我的朋友....

  

我想获得的价值   四舍五入后不是数字


编辑:(按drachenstern

  

我想用10个精度(如45.8456789990)对数字进行舍入,得到一个文本框中的46个结果,另一个文本框中的结果为85个。

提问者有一个像double pi = 3.14159265d;这样的数字,并希望事后得到两个消息框: [整数] 3 [2十进制地方] 14,他想知道如何最好地实现这种影响。他只知道他会得到一个双倍,但他不知道这个数字是否会有小数值。他希望他们。 希望此编辑有所帮助。

4 个答案:

答案 0 :(得分:4)

Math.Round? http://msdn.microsoft.com/en-us/library/75ks3aby.aspx

在@drachenstern澄清之后:

Math.Round(value, 2)

文档:http://msdn.microsoft.com/en-us/library/zy06z30k.aspx

答案 1 :(得分:2)

这可以简单地通过第一次舍入,然后减去并乘以100(如果你不是前两位小数)来完成,然后再次舍入,如下所示:

double pi = 3.14159265d;
int integerParth = (int)Math.Round(pi); // 3(int)
double decimalPoint = pi - integerPart; // 0.1415...(double)
int decimalPart = (int)Math.Round(decimalPoint * 100); // 14

答案 2 :(得分:1)

c#中的数学函数无法给出您的期望值

我尝试使用所有数学函数输入45.60,这些函数用于舍入值

这是输出:

Truncate            45
Round           46
Ceiling             46
Floor           45

我认为除了这些之外的其他一些功能应该用于在文本框中获得类似.60的结果

答案 3 :(得分:1)

为了简单起见,我建议你将它分为三部分:

int wholeNumber; //for getting the left part of the number
int decimalPartTwoPlaces; //for assigning the right part to two characters
double pi = 3.14159265d;

wholeNumber = Math.Round(pi);
decimalPartTwoPlaces = Math.Round( ( pi - (double)wholeNumber ) * 100 ); // cast so it doesn't try and truncate the pi part

这应该具有您想要的值。我没有测试过,但看起来不错。如果它不起作用,请告诉我,我会在我的盒子上运行并调试它。