Wrong conversion of time_t to char
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 1 hour ago
ratchet freak
2,7151511
2,7151511
asked 1 hour ago
kakaviakakavia
2015
2015
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
47 mins ago
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
47 mins ago
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
47 mins ago
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 1 hour ago
Edgar BonetEdgar Bonet
24.3k22345
24.3k22345
Thanks a lot! That was exactly what i needed.
– kakavia
47 mins ago
add a comment |
Thanks a lot! That was exactly what i needed.
– kakavia
47 mins ago
Thanks a lot! That was exactly what i needed.
– kakavia
47 mins ago
Thanks a lot! That was exactly what i needed.
– kakavia
47 mins ago
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