gpt4 book ai didi

c++ - 在C++中不使用*运算符就乘以十进制值

转载 作者:行者123 更新时间:2023-12-02 10:22:56 26 4
gpt4 key购买 nike

我被要求创建一个不使用*进行乘法运算的计算器。计算器还必须能够对十进制值进行加,减和乘运算。我在乘法部分遇到问题。如果我将整数相乘,我得到正确的答案,但是如果我将某个十进制值相乘,则输出不正确的答案。我不知道代码有什么问题。

#include "pch.h"
#include <iostream>

int main()
{
double num1 = 0, num2 = 0, product = 0, a = 0, b = 0, c = 0, answer = 0, fres = 0, d = 0.01;

std::cout << "\nEnter two values:\n";
std::cin >> num1 >> num2;

while (a < 100) {
product = product + num2;
a++;
}

while (b < product) {
fres = fres + num1;
b++;
}

while (c < fres) {
answer = answer + d;
c++;
}
std::cout << answer;
}

最佳答案

主要问题是由以下事实引起的:重复添加浮点类型可能会导致结果“偏离”:例如,自己添加0.1十倍即可看到结果。因此,不必在循环停止后返回获得的值。也许在此之前的值更接近您想要的结果。如果两个参数都不是整数,那么乘法就成为一个公平的挑战,而我内心的魔鬼会寻找仍然能够满足问题约束的替代方案:

请注意,在我看来至少满足问题约束的另一种实现乘法的方法是,注意

a * b = std::exp(std::log(a) + std::log(b))


a / b = std::exp(std::log(a) - std::log(b))

一个比较有趣的方法是使用基于平方的幂运算的算法,除了添加而不是乘法。

关于c++ - 在C++中不使用*运算符就乘以十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com