首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数值转换为字符向量时未得到预期结果

将数值转换为字符向量时未得到预期结果
EN

Stack Overflow用户
提问于 2018-08-15 05:32:45
回答 1查看 151关注 0票数 3

我尝试使用num2strsprintf将数值转换为字符串或字符。我不明白为什么输出和我的输入是不同的?我希望输出与输入相同。

代码语言:javascript
复制
s=num2str(180814132242864695,'%18d')

s = 180814132242864704  % this is the output

s = sprintf('%18d',180814132242864695)
s = 180814132242864704
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 06:00:47

MATLAB将所有数字文字解释为双精度浮点数。问题不在于到字符串的转换,而在于当转换到内存中时,值180814132242864695变成了可以用64位浮点精度表示的最接近的值,因此浮点精度就是180814132242864704

一般来说,如果您处理的数字需要超过52位的精度才能表示(例如大于2^53 - 1 = 9007199254740991 ~ 9e15的整数),那么您将开始遇到精度问题。

示例:

代码语言:javascript
复制
>> 9007199254740992 == 9007199254740993
ans =
    logical
       1

Luis Mendo Why is 24.0000 not equal to 24.0000 in MATLAB?链接的答案给出了MATLAB (和大多数语言)所使用的浮点表示的更详细的描述。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51850064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档