我试图在Arduino UNO上执行一个算法,它需要一些大数字的const表,有时我会得到溢出值。这个数字是这样的:628331966747.0Arduino UNO上的const太大const
好的,这是一个很大的,但是它的类型是float(32位),其中最大值是3.4028235e38。所以理论上它应该起作用?
我能对此做些什么?你知道一个解决方案吗?
编辑:在Arduino的UNO,双是exaclty漂浮同一类型(32个比特)
这里是导致该错误的代码:
float A;
void setup() {
A = 628331966747.0;
Serial.begin(9600);
}
void loop() {
Serial.println(A);
delay(1000);
}
其打印“OVF,OVF, ...,ovf“
什么是错误? – GManNickG
由于浮点数的存储方式,FWIW'628331966747'不能精确地存储为浮点数。在32位浮点数中最接近的表示形式是'628331970560'。然而,双倍将适合罚款。 – Thebluefish
@GManNickG下面的代码我发布我收到“ovf,ovf,ovf ...”对我来说它应该返回类似于:6.283319e011,不是? –