如何将两个整数除法得到二重数?
先将其中一个转换为double。这个表单在很多语言中都适用:
real_result = (int_numerator + 0.0) / int_denominator
将整数转换为双精度。
你想要转换数字:
double num3 = (double)num1/(double)num2;
注意:如果c#中的任何参数是双精度,则使用双除法,其结果为双精度。所以,下面的也可以:
double num3 = (double)num1/num2;
有关更多信息,请参阅:
Dot Net Perls
补充@NoahD的回答
要获得更大的精度,您可以转换为十进制:
(decimal)100/863
//0.1158748551564310544611819235
Or:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Double表示分配64位,而decimal使用128位
(double)100/863
//0.11587485515643106
深度讲解“精准”
有关二进制浮点表示及其精度的更多细节,请参阅Jon Skeet的这篇文章,他在其中讨论了浮点数和双精度数,而这篇文章则讨论了小数。
var firstNumber=5000,
secondeNumber=37;
var decimalResult = decimal.Divide(firstNumber,secondeNumber);
Console.WriteLine(decimalResult );
var result = decimal.ToDouble(decimal.Divide(5, 2));
我已经看过了大部分的答案,我很确定这是不可能实现的。不管你把两个int分成double或float都不会发生。 但是你有大量的方法来进行计算,在计算之前将它们转换为float或double就可以了。
最简单的方法是在整数上加小数点。
Ex.:
var v1 = 1 / 30 //the result is 0
var v2 = 1.00 / 30.00 //the result is 0.033333333333333333
推荐文章
- 如何获取HttpContext。目前在ASP。网络核心?
- 给定文件系统路径,是否有一种更短的方法来提取没有扩展名的文件名?
- 方法在字典中添加新项或更新现有项
- 使用Lambda/Linq对列表进行对象排序
- 为什么我不能在.NET中定义一个结构的默认构造函数?
- TypeLoadException表示“没有实现”,但它已经实现了
- 如何在ASP中返回当前操作。NET MVC视图?
- 存储Kinect 2.0版本的动作到BVH文件
- 在Java中Integer和int的区别是什么?
- SortedList和SortedDictionary之间的区别是什么?
- jQuery用户界面对话框。NET按钮回发
- 合并。net中的两个数组
- 如何在Visual Studio中启用NuGet包恢复?
- 如何在实体框架6中调用存储过程(代码优先)?
- c#中的数组片