num2str format
8 次查看(过去 30 天)
显示 更早的评论
I have problems with num2str format
I get a number from an API:
8.1784e+17
I need the exact number as str output. For instance I know it is:
'817835078876192769'.
I tried with:
num2str(x,'%u')
however this gives me the following wrong result:
ans =
'817835078876192768'
Anyone have a clue what can be wrong here?
0 个评论
采纳的回答
Jan
2021-3-6
编辑:Jan
2021-3-6
What does "I get a number from an API: 8.1784e+17" mean? Is this a char vector, string or a UINT64 or double scalar? In the last case, remember that doubles contain about 16 digits only. So there is no chance to store a value with 18 digitis accurately.
x = uint64(817835078876192769)
% uint64 817835078876192769
double(x)
% 8.17835078876193e+17
uint64(double(x))
% uint64 817835078876192768
num2str(x)
% '817835078876192769'
sprintf('%d', x)
% '817835078876192769'
sprintf('%.0f', x)
% '817835078876192768'
So the problem might be, that the value is provided as double value. You need to store the value as UINT64 or as char array or string.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!