c# - 仅通过将类型从 int 更改为 decimal 才能在数学结果中完全相同的值有何不同
问题描述
我正在做一些项目,需要做一些数学运算:
decimal X = (Value / 881) * (item.Type ? 130: 130 * 2);
例如,参数“Value”等于 3000。
如果“值”是类型int
,结果是 390.. 如果“值”是类型decimal
,结果是 442.67
这怎么可能 ??
解决方案
因为十进制值。decimal
如果你一步一步计算你的公式,你就会明白这种差异是由于当你用作类型时出现在小数点后的值
当您将 3000(整数)除以 881 时:
int Value = 3000
//Output is 3. Output is in integer
decimal X = (Value / 881); //When int is divided by int then result is in int
当您将 3000(十进制)除以 881 时:
decimal Value = 3000
//Output is 3.4052213393870601589103291714. Output is in decimal.
decimal X = (Value / 881); //When decimal is divided by int then result is in decimal
我希望 .net fiddle 能让您更好地了解我的答案
推荐阅读
- javascript - 如何在 fs.readFileSync 中使用通配符
- reactjs - 通过在组件外部分派更新 setInterval 中的状态
- python - 为什么使用 pandas read_csv usecols 读取少量特定列的速度如此之慢?
- c++ - 将 void 函数作为参数传递给 void 函数
- tensorflow - ValueError:预期批量大小和模型输出批量大小不匹配
- java - 运行 .jar 文件时 regex.Matcher.results() 的 Java NoSuchMethodError
- r - 在 R 中的同一函数中同时使用文本和参数
- node.js - 如何在 Nodejs 中将时间码添加到 wav 文件
- apache-flink - Flink Job Fails with AsynchronousException:在处理计时器时捕获异常
- google-apps-script - 在 GAS 网页之间导航时出现空白页