C# VB脚本整数除法与浮点除法取整

C# VB脚本整数除法与浮点除法取整,c#,asp.net,math,C#,Asp.net,Math,嗨,各位飞越者 将公式从classic aspVBscript转换为C#.net 我需要c与VBScript 公式是这样的 Dim dTravelHours, result dTravelHours = 22.7359890666919 result = (CDbl(dTravelHours)*2 + 2)\8 从数学上讲,结果是5.9331475,但是因为我使用了整数除法而不是十进制除法“/”结果是5,我可以在c#中正确地得到这个结果,只需将结果类型转换为int 但是,如果我使用了不同的值:

嗨,各位飞越者

将公式从
classic asp
VBscript
转换为
C#.net
我需要
c
VBScript

公式是这样的

Dim dTravelHours, result
dTravelHours = 22.7359890666919
result = (CDbl(dTravelHours)*2 + 2)\8
从数学上讲,结果是5.9331475,但是因为我使用了整数除法而不是十进制除法“/”结果是5,我可以在c#中正确地得到这个结果,只需将结果类型转换为int

但是,如果我使用了不同的值:

Dim dTravelHours, result
    dTravelHours = 22.7359890666919
    result = (CDbl(dTravelHours)*2 + 2.5)\8
数学结果是5.9956475 vbScript的结果是6

与5.9456475相同,
vbscript
结果为6

如何在
C#
中复制相同的行为? 我已经试过使用
Math.Floor、
Math.天花、
Math.Round
,但仍然没有效果


提前感谢您的回答和建议

,因为MSDN声明VBR脚本是通过以下方式实现的:

结果是number1除以number2的整数商。这个 整数商丢弃任何余数,只保留整数 部分。在执行除法之前,数值表达式将四舍五入 到字节、整数或长子类型表达式

实现方式如下:它默认返回整数,并将一半舍入为偶数或银行家舍入(C#中的默认值)

因此,您可以使用
Math.Round
和整数除法使用此C#版本:

double value = 22.7359890666919;
double calculationResult1 = value * 2 + 2.0;
double calculationResult2 = value * 2 + 2.5;
double rounded1 = Math.Round(calculationResult1);  // 47
double rounded2 = Math.Round(calculationResult2 ); // 48
int result1 = (int)rounded1 / 8;  // 5
int result2 = (int)rounded2 / 8;  // 6

正如MSDN所述,VBR脚本的实现方式如下:

结果是number1除以number2的整数商。这个 整数商丢弃任何余数,只保留整数 部分。在执行除法之前,数值表达式将四舍五入 到字节、整数或长子类型表达式

实现方式如下:它默认返回整数,并将一半舍入为偶数或银行家舍入(C#中的默认值)

因此,您可以使用
Math.Round
和整数除法使用此C#版本:

double value = 22.7359890666919;
double calculationResult1 = value * 2 + 2.0;
double calculationResult2 = value * 2 + 2.5;
double rounded1 = Math.Round(calculationResult1);  // 47
double rounded2 = Math.Round(calculationResult2 ); // 48
int result1 = (int)rounded1 / 8;  // 5
int result2 = (int)rounded2 / 8;  // 6

数学。天花板(5.9956475)是6,这就是你想要的,对吗?是的,这是正确的,但是在VBScript中5.9331475是5,因为它使用整数除数,但是5.9956475是6,如果我在C中简单地使用天花板,它将得到6的结果,这与VBScript中的结果不同,所以5.9331475应该是5,而5.9456475应该是6?规则是什么?你要5块还是6块?这应该对你有帮助:是的,蒂姆,没错,5.9956475也是6,数学。天花板(5.9956475)是6,这就是你想要的,对吗?是的,没错,但在VBScript中,5.9331475是5,因为它使用整数除数,但是5.9956475是6,如果我在C中简单地使用天花板,它的结果都是6,这与VBScript中的结果不同,那么5.9331475应该是5,5.9456475应该是6?规则是什么?你要5块还是6块?这应该对你有帮助:是的,蒂姆,没错,5.9956475也是6,哇,蒂姆!没想到这个,我只是在数学中把公式分开。在除以8之前先把它四舍五入,它就成功了!谢谢哇,蒂姆!没想到这个,我只是在数学中把公式分开。在除以8之前先把它四舍五入,它就成功了!谢谢