Wrong conversion of time_t to char
Clash Royale CLAN TAG#URR8PPP
I have a simple sample of code that i want to convent a time_t to char array in order to concatenate it after, in an other array.
Code:
time_t unixt;
char exm [40];
unixt = RTC.get();
Serial.println(unixt);
dtostrf(unixt, 10, 0, exm);
Serial.println(exm);
The problem that i face is that, the console is printing different the second one every time like this:
1548258220
1548258200
I tried also with unsigned long with no result either. Can someone point me what's wrong or an other way of doing this?
arduino-mega
add a comment |
I have a simple sample of code that i want to convent a time_t to char array in order to concatenate it after, in an other array.
Code:
time_t unixt;
char exm [40];
unixt = RTC.get();
Serial.println(unixt);
dtostrf(unixt, 10, 0, exm);
Serial.println(exm);
The problem that i face is that, the console is printing different the second one every time like this:
1548258220
1548258200
I tried also with unsigned long with no result either. Can someone point me what's wrong or an other way of doing this?
arduino-mega
add a comment |
I have a simple sample of code that i want to convent a time_t to char array in order to concatenate it after, in an other array.
Code:
time_t unixt;
char exm [40];
unixt = RTC.get();
Serial.println(unixt);
dtostrf(unixt, 10, 0, exm);
Serial.println(exm);
The problem that i face is that, the console is printing different the second one every time like this:
1548258220
1548258200
I tried also with unsigned long with no result either. Can someone point me what's wrong or an other way of doing this?
arduino-mega
I have a simple sample of code that i want to convent a time_t to char array in order to concatenate it after, in an other array.
Code:
time_t unixt;
char exm [40];
unixt = RTC.get();
Serial.println(unixt);
dtostrf(unixt, 10, 0, exm);
Serial.println(exm);
The problem that i face is that, the console is printing different the second one every time like this:
1548258220
1548258200
I tried also with unsigned long with no result either. Can someone point me what's wrong or an other way of doing this?
arduino-mega
arduino-mega
edited Jan 23 at 13:59
ratchet freak
2,7451511
2,7451511
asked Jan 23 at 13:56
kakaviakakavia
2515
2515
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Use ultoa()
instead of dtostrf()
. The former is meant to serialize
unsigned long integers, while the later is for floating point numbers.
By using dtostrf()
, you are implicitly converting unixt
to a
floating point number. The Arduino Mega only supports single precision
floating point, so this conversion incurs some loss of precision, hence
the result you see.
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("schematics", function ()
StackExchange.schematics.init();
);
, "cicuitlab");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "540"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2farduino.stackexchange.com%2fquestions%2f60900%2fwrong-conversion-of-time-t-to-char%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use ultoa()
instead of dtostrf()
. The former is meant to serialize
unsigned long integers, while the later is for floating point numbers.
By using dtostrf()
, you are implicitly converting unixt
to a
floating point number. The Arduino Mega only supports single precision
floating point, so this conversion incurs some loss of precision, hence
the result you see.
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
add a comment |
Use ultoa()
instead of dtostrf()
. The former is meant to serialize
unsigned long integers, while the later is for floating point numbers.
By using dtostrf()
, you are implicitly converting unixt
to a
floating point number. The Arduino Mega only supports single precision
floating point, so this conversion incurs some loss of precision, hence
the result you see.
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
add a comment |
Use ultoa()
instead of dtostrf()
. The former is meant to serialize
unsigned long integers, while the later is for floating point numbers.
By using dtostrf()
, you are implicitly converting unixt
to a
floating point number. The Arduino Mega only supports single precision
floating point, so this conversion incurs some loss of precision, hence
the result you see.
Use ultoa()
instead of dtostrf()
. The former is meant to serialize
unsigned long integers, while the later is for floating point numbers.
By using dtostrf()
, you are implicitly converting unixt
to a
floating point number. The Arduino Mega only supports single precision
floating point, so this conversion incurs some loss of precision, hence
the result you see.
answered Jan 23 at 14:18
Edgar BonetEdgar Bonet
24.5k22445
24.5k22445
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
add a comment |
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
Thanks a lot! That was exactly what i needed.
– kakavia
Jan 23 at 14:39
add a comment |
Thanks for contributing an answer to Arduino Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2farduino.stackexchange.com%2fquestions%2f60900%2fwrong-conversion-of-time-t-to-char%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown