c# - 如何使用 Math.DivRem() 获得双精度值?
问题描述
我无法在 C# 中显示双精度值
Math.DivRem(double money, int number, out int remain);
解决方案
Math.DivRem 方法仅与 Int64 和 Int32 兼容,这意味着您不能使用 double、float 或任何带有小数的数字数据类型。
根据您要查找的内容,这是获取双打的商和余数的另外两种方法:
double a = 20.1;
double b = 4.93;
double remainder = a % b; // Returns 0.380...
double quotient = a / b; // Returns 4,077...
如果你想让你的余数或商为int,只需使用
int result = Convert.ToInt32(quotient); // Returns 4
或者让它更有效率
int result = ConvertToInt32(a / b); // Returns 4
编辑
将 Math.DivRem 与“双精度数”一起使用的一种解决方法是将两边乘以一个常数,例如 100 000。得到余数后,将其除以常数。
double money = 5.515;
int number = 2;
int constant = 100000;
Math.DivRem(Convert.ToInt32(money * constant), number * constant, out int remain);
// Divides 551500 with 200000
// remain = 151500
// For double
double d = (double) remain / (double) constant; // Return 1,515
// For int
remain /= constant; // Return 1
双重编辑
Math.DivRem()
在处理双精度和整数组合时使用它而不是。
double money = 12.15;
int number = 5;
double remainder = money % number; // Return 2,15...
int remainder = (int)(money % number); // Return 2
推荐阅读
- javascript - Javascript:拒绝成功的承诺
- ios - iOS 在 PM 和 AM 之间设置 datepicker TimeMode 最小和最大日期
- scala - 根据多个条件过滤列:Scala Spark
- java - 如何让 RecyclerView onClick 在片段中工作
- php - 未找到 Laravel 命令视图
- delphi - buttongroup 项目被按下,无法点击更多时间
- arrays - jq 负选择数组的元素
- java - 不使用 AOJ 或类似的 Java 静态类中“装饰”方法的选项
- ios - 设置 UIProgressView.trackTintColor 时出现 CGPostError
- java - 有没有办法我可以只声明这些组一次?