Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无论我如何施法,Arduino DateTime似乎都被视为int_C_Arduino - Fatal编程技术网

C 无论我如何施法,Arduino DateTime似乎都被视为int

C 无论我如何施法,Arduino DateTime似乎都被视为int,c,arduino,C,Arduino,问题主要在于: DateTime timenow = RTC.now(); Serial.println(timenow.unixtime()); double unixd = timenow.unixtime()/1.234; Serial.println(unixd,4); 产出如下: //unixtime - 1460128448 //unixd - 1183248384.0000 应在何时输出: //unixtime - 1460128448 //unixd - 1183

问题主要在于:

DateTime timenow = RTC.now();    
Serial.println(timenow.unixtime());
double unixd = timenow.unixtime()/1.234;
Serial.println(unixd,4);
产出如下:

//unixtime - 1460128448
//unixd  - 1183248384.0000
应在何时输出:

//unixtime - 1460128448
//unixd  - 1183248337.1150

我尝试过以不同的方式来转换变量,比如添加(float)或(double)或其他什么,但似乎没有任何效果。有什么想法吗?

没有小数的数字
1183248337
需要31位

AVR上的
double
/
float
为32位。 您只是使用了一个对于该类型来说太大的数字


您可以使用
uint64\u t
使用固定宽度算法。将您的数字表示为一个整数(11832483371150而不是1183248337.1150),然后进行除法/减法以提取要打印的部分。

@FiddlingBits我也尝试了
double unixd=timenow.unixtime()/1.234f
不幸的是,它输出相同的东西。尝试将
unixd
更改为
float
float unixd=…
@FiddlingBits谢谢你。我也试过了,可惜运气不好
float unixd=timenow.unixtime()/1.234f输出:
1460130626
1183250176.0000
如果有帮助,在库RTClib中,unixtime被强制转换为
uint32\t
谢谢,将尝试此操作。我想可能是这样的,因为我在处理目标C中的毫秒时遇到了类似的问题。我将对此进行测试并返回给您。注意:一旦您计算了位n个片段,您就无法打印64位数字(未处理),请将部分转换为long或int(无论它适合什么)