c# - 基本算术问题 C# (1.1 vs (1+(1/10))
问题描述
我不明白为什么 a 和 b 没有相同的结果。下面是对应的代码:
public static void Main()
{
double a = 10;
double b = 10;
for (int i=0; i<10; i++)
{
Console.WriteLine("a: " + a);
Console.WriteLine("b: " + b + "\n");
a = a * 1.1;
b = b * (1+(1/10));
}
}
//输出
甲:10乙:10
甲:11乙:10
甲:12.1乙:10
一个:13.31 乙:10
一个:14.641 乙:10
一个:16.1051 乙:10
答:17.71561 乙:10 ....
我希望你能帮助我。
解决方案
正如上面 Timbo 所述。这完全是关于编译器如何处理数字 1 和 10。为了演示如何计算相同的数字,我已经转换了每个数字。
public static void Main()
{
double a = 10;
double b = 10;
for (int i=0; i<10; i++)
{
Console.WriteLine("a: " + a);
Console.WriteLine("b: " + b + "\n");
a = a * 1.1;
b = b * ((double)1+((double)1/(double)10));
}
}
现在 a 和 b 都是一样的。我为上面的例子创建了一个 .NET fiddle。https://dotnetfiddle.net/dUZdAi
推荐阅读
- tensorflow - TensorFlow seq2seq 教程404
- javascript - 将带有长字符串的 JSON 发送到 Ajax
- javascript - 检测 SPA 中的 URL 更改
- java - 从服务器运行应用程序时,ElasticSearch 在 PUT 上抛出 403,但在本地计算机上运行时有效
- python - 如何使用python在mongo db中删除数据
- r - 使用 .csv 文件中的 ggplot2 绘制时间序列的日期问题,其中包含年月的单独列
- zfs - zfs 6个存储盘+usb启动
- arrays - Application.worksheetfunction.sumif 以内部数组作为参数
- amazon-web-services - Elastic Beanstalk 未流式传输到 CloudWatch
- python - Python:递归方法回滚更改?