标签: c++ precision
我正在研究项目Euler的第三个练习的解决方案,我需要循环sqrt(600851475143.0)以下的奇数。但是每次循环迭代时我都不能从数字中减去2,每次都保持不变。根据{{3}},这是由于数字的存储方式以及上面的所有内容以及小数点以下的所有内容都会丢失。我该如何解决这个问题?我需要十进制数,所以我不能使用int(无论如何都不够大)。
sqrt(600851475143.0)
答案 0 :(得分:2)
由于您正在寻找奇数,而奇数是按定义整数,只需使用适当的整数类型而不是浮点数学。