Please is it possible to store 0 as 0.0(or 50 as 50.0? I have to save numeric values to json file ( using jsonencode ). I need this specific format due to dependency forward in program chain ( I cannot change the input format of the next block and it is specified that this format is needed). I've spent 4 hours browsing and trying but I am still stuck :( (sprintf('%.1f',var) did not worked... Any help appreciated

댓글 수: 2

Fangjun Jiang
Fangjun Jiang 2018년 2월 13일
What format do you need to "store", text file? sprintf('%.1f',50) outputs '50.0'. What is the issue?
Jergus Frajt
Jergus Frajt 2018년 2월 13일
e.g. desired output
somejson file...{ "numbers":[0.0, 0.0, 60.0]}...
those values got to be numeric because in the next block they are used, the "old" json file was written by hand, but I want to make it autogenerated

댓글을 달려면 로그인하십시오.

 채택된 답변

Akira Agata
Akira Agata 2018년 2월 14일

0 개 추천

How about using regexprep to add '.0' for integer values? Here is an example.
x = [0.0 12.0 3.1];
str = jsonencode(x);
output = regexprep(str,'(?<=([|,))[0-9]+(?=(,|]))','$0.0');
The output is:
>> output
output =
'[0.0,12.0,3.1]'

댓글 수: 1

Jergus Frajt
Jergus Frajt 2018년 2월 15일
Thank you very much, regular expression is maybe the only thing I did not came up with :)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2018년 2월 13일

0 개 추천

json files are text files, so if you write your own, using fprintf(), then yes you can do that.

댓글 수: 7

Jergus Frajt
Jergus Frajt 2018년 2월 13일
I am loading data from excel and then creating struct data. Then I use jsonencode matlab function. As mentioned above I need those values as numeric not strings.
James Tursa
James Tursa 2018년 2월 13일
The value 0 is the same as the value 0.0 in MATLAB ... they are both numeric double values with exactly the same internal bit pattern (all 0 bits). So we still don't know what your real issue is. An exact 0 does not "display" the .0 part by default, but it is still the same numeric value as 0.0
Image Analyst
Image Analyst 2018년 2월 13일
Why do you even care how it's listed in the json file? What does it matter?
Jergus Frajt
Jergus Frajt 2018년 2월 13일
I am sorry, maybe I wasn't precise in explaining. I of course understand that 0 is same value as 0.0 in MATLAB, but json file, I am trying to generate, is processed by other languages and I was told this desired output ( 0.0 ). So when I run of "googling" options, I made this question just to ask if it is possible. I hope I've made myself clear now :)
Image Analyst
Image Analyst 2018년 2월 13일
Do your other languages throw an error if it's 0 instead of 0.0?
James Tursa
James Tursa 2018년 2월 13일
No, not really. Numerically 0 and 0.0 are the same, so we assume you mean to write a text file with the output having 0.0 instead of 0. Others have already shown you how to do this with e.g. sprintf( ). Why doesn't this work for you?
Jergus Frajt
Jergus Frajt 2018년 2월 15일
Image Analyst, I don't know, I don't have access to next program chain blocks, I just have this desired output. James Tursa, I've tried sprintf(), but after calling jsonencode() function, it creates some unexpected ASCII characters. Thank you all, but it seems answer from Akira Agata worked for me :)

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

질문:

2018년 2월 13일

댓글:

2018년 2월 15일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by