C# 从双重结果中获取舍入值

C# 从双重结果中获取舍入值,c#,asp.net,rounding,C#,Asp.net,Rounding,我想在两个文本框中显示计算的净金额 如果netamount=45.60 第一个文本框应显示舍入值和 下一个文本框应显示四舍五入的内容。 我之前用c做过一个手动取整程序,现在我的经理不希望我做这样的事情,因为他相信c#在构建函数中有所有的数学功能。所以请帮助我的朋友 我想得到的是 不舍入小数点后的数字 编辑:(作者) 我想对一个10精度的数字进行四舍五入,比如45.8456789990,在一个文本框中得到46,在另一个文本框中得到85 询问者有一个类似于double pi=3.14159265d

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

如果
netamount=45.60

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

我之前用c做过一个手动取整程序,现在我的经理不希望我做这样的事情,因为他相信c#在构建函数中有所有的数学功能。所以请帮助我的朋友

我想得到的是 不舍入小数点后的数字


编辑:(作者)

我想对一个10精度的数字进行四舍五入,比如45.8456789990,在一个文本框中得到46,在另一个文本框中得到85

询问者有一个类似于
double pi=3.14159265d的数字
并希望在事件结束后有两个消息框:[整数]
3
[2位小数]
14
,他想知道如何最好地实现这一效果。他只知道会给他一个double,但他不知道这个数字是否有小数。他希望他们会。希望此编辑有帮助。

Math.Round

@drachenstern澄清后:

Math.Round(value, 2)
文档:

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

我尝试了你的输入45.60,使用了所有可以舍入值的数学函数

以下是输出:

Truncate            45
Round           46
Ceiling             46
Floor           45

我认为应该使用除这些函数之外的其他函数来获得文本框中的.60这样的结果

为了简单起见,我建议将其分为三个部分:

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

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

这可以简单地通过以下方式完成:首先进行四舍五入,然后进行减法运算并乘以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

检查一下数学,四舍五入function@karthikRatnam因此,您希望编写自己的代码,而不是信任库,并且希望花更长的时间来开发相同的代码?如果我是他,我也会像你一样做。如果我把你们都搞糊涂了,保持这样。我想用10个精度对一个数字进行四舍五入,比如45.8456789990,然后在一个文本框中得到46,在另一个文本框中得到85。你们现在能得到我的问题吗…(如果你们有任何其他建议,然后使用图书馆..请告诉我)@KarthikRatnam~下次编辑你们的问题或首先从那个例子开始。谢谢。很抱歉下次我会编辑的不,没人,我懂数学,圆函数,我不是问这个。。。。我在问如何得到四舍五入的值。。。。圆函数也是c语言的。我问的是如何得到四舍五入的值。你能理解吗(b/w谁为这个简单的答案给出了3个ups):(我不明白什么是“四舍五入值”然后是-你能解释/提供一个例子吗?我理解的是,在上面的例子中,左侧文本框应该包含45,右侧文本框应该包含60。如果不是,它应该包含什么?左侧文本框应该包含46,右侧文本框应该是60是可以的。如何使用math获得值60。round是我的问题?不是直接的,而是:
45.60-math.Truncate(45.60)=0.60
@drachenstern谢谢!这很有效。我不知道math.round也可以这样使用。这对我来说是新的。谢谢。谢谢你澄清我的问题并给出答案。因为andrew建议没有真正的数学函数来做解决方案……我将把它作为我的输出提供给我的经理。让他决定。:)如果你在两个文本框中需要它们,情况就是这样。实际上有几种方法可以做到这一点。但它们都会在大约相同的时间内工作。我不理解你最后的评论。你为什么要删除答案,它不工作吗?那很好。如果它不工作,我想帮助你找出为什么不工作。对不起,我想你们都给了一个w荣回答…我怀疑…对于40.69,它给出的答案是-31:(