在Matlab中,双精度的相同数字是否可以大于整数格式的相同数字?

在Matlab中,双精度的相同数字是否可以大于整数格式的相同数字?,matlab,Matlab,我在Matlab中遇到了以下难题,双精度(380.0000)中的相同数字能否大于整数格式(380)中的相同数字?以下是给定问题的示例: K>> maxWeightsSum maxWeightsSum = 380.0000 K>> solutionsSumSorted(1) ans = 380 K>> maxWeightsSum>solutionsSumSorted(1) ans = 1 不,但发生的事情并不是这样。您的maxWeigh

我在Matlab中遇到了以下难题,双精度(380.0000)中的相同数字能否大于整数格式(380)中的相同数字?以下是给定问题的示例:

K>> maxWeightsSum

maxWeightsSum =

380.0000

K>> solutionsSumSorted(1)

ans =

380

K>> maxWeightsSum>solutionsSumSorted(1)

ans =

 1

不,但发生的事情并不是这样。您的
maxWeightsSum
不完全是380,它更大,但您没有显示它。默认情况下,Matlab不显示整数,但这4个零应该会提示后面有一些值。此外,您可以检查工作空间变量,并且应该能够看到整数

请尝试以下代码:

exact=380;
bigger=380.00000001;

format short % Tell matlab to display only 4 digits after the coma (this is default)

exact
bigger

format longG   % Tell matlab to display the whole number

exact
bigger
通常,您希望根据自己的需要设置显示器的尺寸


编辑:在某些情况下,这似乎是不够的。但是,我将把答案留在这里,因为我觉得知道答案很重要。

尝试使用sprintf显示它:

x=sqrt(3)
x =   1.732050807568877
sprintf('%16.16f',x)
ans =
1.7320508075688772
然后

 1.7320508075688772==x
 ans =
 1

我敢打赌第一个不完全是380。试着做一个减去另一个。即使“格式长”也不会显示“整数”。有人知道如何以全分辨率查看实际数字吗?@biguri,这还不够。try:sprintf(“%16.16f',x)ans=1.732050807568772>>1.732050807568772==x ans=1>>格式long>>x=1。73205080756888@mousomer你说得对。@mousomer使用
格式hex
。这将向您展示MATLAB正在存储的数字的完整表示。啊。但是用十六进制来读数字是一项绝技,不仅仅是对凡人而言。