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之前先把它四舍五入,它就成功了!谢谢