如何在c++;? 我正在编写一个C++程序,其中包含非常小的浮点数。因此,我使用了double来表示数字。但当浮点数在循环中相乘时,最终的乘积为0。但是我需要显示实际的浮点数。我如何处理这些数字 class myclass { private : double value; } double calculate(count) { double key=this->value; double prev_level=pow(2,level-1); if(key-prev_level >=0) key=key-prev_level; int index= (2* key) + table[row_num][pos]; double num1=array_l1[index]; // array_l1 and array_l2 are of type double double num2=array_l2[index]; std::pair<double,double> p = list[key].at(row_num); double data=p.first; prod1=num1 *data; data=p.second; prod2=num2 * data; return prod1+prod2; } void compute() { double prod = 1; for (int i = 0; i < count; i++) { myclass c1(count); myclass c2(count+1); double value= c1.calculate * c2.calculate(); } } class-myclass { 私人: 双重价值; } 双重计算(计数) { 双键=此->值; 双上一级=功率(2,1级); 如果(键-上一级>=0) key=key-prev_级别; int index=(2*键)+表[row_num][pos]; double num1=array_l1[index];//array_l1和array_l2属于double类型 double num2=数组_l2[索引]; std::pair p=list[key].at(row_num); 双数据=p.first; prod1=num1*数据; 数据=p.s; prod2=num2*数据; 返回prod1+prod2; } void compute() { 双针=1; for(int i=0;i

如何在c++;? 我正在编写一个C++程序,其中包含非常小的浮点数。因此,我使用了double来表示数字。但当浮点数在循环中相乘时,最终的乘积为0。但是我需要显示实际的浮点数。我如何处理这些数字 class myclass { private : double value; } double calculate(count) { double key=this->value; double prev_level=pow(2,level-1); if(key-prev_level >=0) key=key-prev_level; int index= (2* key) + table[row_num][pos]; double num1=array_l1[index]; // array_l1 and array_l2 are of type double double num2=array_l2[index]; std::pair<double,double> p = list[key].at(row_num); double data=p.first; prod1=num1 *data; data=p.second; prod2=num2 * data; return prod1+prod2; } void compute() { double prod = 1; for (int i = 0; i < count; i++) { myclass c1(count); myclass c2(count+1); double value= c1.calculate * c2.calculate(); } } class-myclass { 私人: 双重价值; } 双重计算(计数) { 双键=此->值; 双上一级=功率(2,1级); 如果(键-上一级>=0) key=key-prev_级别; int index=(2*键)+表[row_num][pos]; double num1=array_l1[index];//array_l1和array_l2属于double类型 double num2=数组_l2[索引]; std::pair p=list[key].at(row_num); 双数据=p.first; prod1=num1*数据; 数据=p.s; prod2=num2*数据; 返回prod1+prod2; } void compute() { 双针=1; for(int i=0;i,c++,floating-point,C++,Floating Point,由于大小原因,我无法包含所有代码,但我希望此函数可以解释我面临的问题。随着count的值增加,value的值减小。所以对于较大的count,我得到一个0 如何显示value的实际值?浮点类型使用固定大小的表示。这有两个直接影响: 一般情况下,值不能精确表示,而是使用舍入值 值的范围是有限的 如果需要更高的精度或更宽的范围,则需要不同的表示。您可能想看看。浮点类型使用固定大小的表示形式。这有两个直接影响: 一般情况下,值不能精确表示,而是使用舍入值 值的范围是有限的 如果需要更高的精度或更宽的范围

由于大小原因,我无法包含所有代码,但我希望此函数可以解释我面临的问题。随着
count
的值增加,
value
的值减小。所以对于较大的
count
,我得到一个0


如何显示
value
的实际值?

浮点类型使用固定大小的表示。这有两个直接影响:

  • 一般情况下,值不能精确表示,而是使用舍入值
  • 值的范围是有限的

  • 如果需要更高的精度或更宽的范围,则需要不同的表示。您可能想看看。

    浮点类型使用固定大小的表示形式。这有两个直接影响:

  • 一般情况下,值不能精确表示,而是使用舍入值
  • 值的范围是有限的

  • 如果需要更高的精度或更宽的范围,则需要不同的表示。您可能想看一看。

    首先检查您使用的输出格式是否允许使用科学记数法,而不仅仅是小数点后的固定位数

    如果仍然导致零输出,考虑求和而不是直接乘以数字。< /P> 例如,如果目标是比较乘积的比率,则可以使用对数完成计算,而无需进行求幂运算以返回非对数世界


    如果只需要显示结果,请选择一个大常量。在进行求幂运算之前,将常数的对数添加到总和中,并将常数包含在显示屏中。

    首先检查您使用的输出格式是否允许科学记数法,而不仅仅是小数点后的固定位数

    如果仍然导致零输出,考虑求和而不是直接乘以数字。< /P> 例如,如果目标是比较乘积的比率,则可以使用对数完成计算,而无需进行求幂运算以返回非对数世界


    如果只需要显示结果,请选择一个大常量。在执行求幂运算之前,将常数的对数添加到总和中,并将常数包括在显示中。

    数值
    num
    不起任何作用。请尝试使用科学符号打印您的数字。
    某些函数()可能与之重复。
    ?为什么从不使用
    num
    ?请把整件事发出去。“由于大小的原因,我无法编写完整的代码”-别担心,我们可以处理它,文本框也可以,它将获得一个滚动条。您如何检查值<代码>不能<代码>打印F?还有别的吗?同样,您需要发布所有相关的代码,而不仅仅是一个脱节的代码段。请尝试使用科学符号打印您的数字。
    某些函数()可能与之重复。
    ?为什么从不使用
    num
    ?请把整件事发出去。“由于大小的原因,我无法编写完整的代码”-别担心,我们可以处理它,文本框也可以,它将获得一个滚动条。您如何检查值<代码>不能<代码>打印F?还有别的吗?同样,您需要发布所有相关代码,而不仅仅是一个脱节的代码段。