草庐IT

doublenumbers

全部标签

C++ std::accumulate 没有给出预期的总和

doublenumbers[]={1,0.5,0.333333,0.25,0.2,0.166667,0.142857,0.125,0.111111,0.1};std::vectordoublenumbers(numbers,numbers+10);std::cout这会产生1,这显然是错误的。有什么解释吗? 最佳答案 你应该写如下:std::cout因为0的类型是int。当std::accumulate被实例化,第三个参数的类型是int,那么它会转换右边的和。例如:result+=*iter;//int+=double这将强制将do

C++ std::accumulate 没有给出预期的总和

doublenumbers[]={1,0.5,0.333333,0.25,0.2,0.166667,0.142857,0.125,0.111111,0.1};std::vectordoublenumbers(numbers,numbers+10);std::cout这会产生1,这显然是错误的。有什么解释吗? 最佳答案 你应该写如下:std::cout因为0的类型是int。当std::accumulate被实例化,第三个参数的类型是int,那么它会转换右边的和。例如:result+=*iter;//int+=double这将强制将do