浮点到整数vs整点到浮点自动转换

时间:2019-02-20 21:45:02

标签: java

我正在通过Herbert Schildt的“面向初学者的Java”书来学习Java。可以说,由于命运变量是兼容的并且足够大以存储原始变量,因此可以进行自动转换。

话虽如此,一个Int应该能够存储一个Float,反之亦然,因为它们都具有4个字节的大小。

public class MyClass {
    public static void main(String args[]) {
        int i = 10;
        float f = i;

        float ff = 10;
        int ii = ff; 
    }
}

但是,这段代码在编译时会产生以下错误:

/MyClass.java:15: error: incompatible types: possible lossy conversion from float to int
        int ii = ff; 
                 ^
1 error

为什么会有一个兼容类型并且足够大以相互存储,所以float可以存储int但int不能存储float?

4 个答案:

答案 0 :(得分:1)

因为浮点数在小数点后也包含数字,而int则不包含。如果没有此功能,您也不能通过将浮点数也显式转换为int来简单地修剪数字中的小数部分。

答案 1 :(得分:1)

如您所见,可以将int存储到float中,但是不能将float放在int中。

之所以这么堆是因为float的内部结构是一个十进制数,而int就像它的名字一样,是整数。

有关更多信息,您可以查看有关How are floating point numbers are stored in memory的讨论。

答案 2 :(得分:0)

  

Int应该能够存储Float,反之亦然,因为它们都具有4个字节的大小。

数据的大小不是重要的部分。而是关于可以存储在给定字节数中的值。 UPDATE imgs i INNER JOIN img_archives ia ON i.imgs_id = ia.old_img_id SET i.img_name = ia.old_img_name; 只能存储-2 ^ 31和2 ^ 31-1之间的整数值。另一方面,<footer role="contentinfo" class="footer container pt-5 mt-5"> <div class="col col-lg-3 col-md-6 d-12 d-sm-12"> <h3 class="m-3 font-weight-bold">À propos</h3> <ul class="list-unstyled p-0"> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/portrait-du-ciusss-de-la-capitale-nationale">Portrait</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/clsc#nom=&service=&catservice=&ressource=216">Nous joindre</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/conseil-dadministration">Conseil d'administration</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/salle-de-presse">Salle de presse</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/le-code-dethique-vos-droits-nos-engagements">Code d'éthique</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/rapport-annuel">Rapport annuel</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/amelioration-continue">Amélioration continue</a></li> </ul> </div> <div class="col col-lg-3 col-md-6 d-12 d-sm-12"> <h3 class="m-3 font-weight-bold">Services</h3> <ul class="list-unstyled p-0"> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/en-cas-durgence">Urgence</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/consulter-un-medecin-ou-une-infirmiere-0">Consulter un médicin</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/situation-difficile-detresse">Situation difficile</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/vivre-en-sante">Vivre en santé</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/deficiences-et-handicaps">Déficiences</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/alcool-drogue-et-jeu">Alcool, drogue et jeu</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/famille-enfants-parents">Famille, enfants, parents</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/jeunesse">Jeunesse</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/aines-0">Ainés</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/services-psychosociaux-et-sante-mentale-0">Santé mentale</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/commentaire-plainte">Commentaire, plainte</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/propos-de-nous/le-code-dethique-vos-droits-nos-engagements">Code d'éthique</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/nos-services/banque-dinterpretes-de-la-capitale-nationale">Banque d'interprètes</a></li> </ul> </div> <div class="col col-lg-3 col-md-6 d-none d-12 d-sm-12"> <h3 class="m-3 font-weight-bold">Expertise et partenariat</h3> <ul class="list-unstyled p-0"> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/sante-publique">Santé publique</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/formation-reseau">Formation réseau</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/colloques-congres-et-conferences">Colloques et congrès</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/ordonnances-collectives-0">Ordonnances collectives</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/espace-medecine">Espace médecine</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/espace-pharmacie">Espace Pharmacie</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/espace-soins-infirmiers">Espace soins infirmiers</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/services-prehospitaliers-durgence">Services préhospitaliers</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/le-centre-dexcellence-sur-le-vieillissement-de-quebec">Centre sur le vieillissement</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/partenariat">Partenariat</a></li> <li class="m-3"><a href="https://www.ciusss-capitalenationale.gouv.qc.ca/expertise-et-partenariat/comites-des-usagers-et-comites-de-residents">Comités des usagers</a></li> </ul> </div> <div class="col col-lg-3 col-md-6 d-12 d-sm-12"> <h3 class="m-3 font-weight-bold">Recrutement</h3> <ul class="list-unstyled p-0"> <li class="m-3"><a href="http://localhost:8011/en/recrutement/trouver-un-emploi">Trouver un emploi</a></li> <li class="m-3"><a href="http://localhost:8011/en/recrutement/trouver-un-stage">Stage</a></li> <li class="m-3"><a href="http://localhost:8011/en/trouver-un-emploi/demande-de-stage">Nouveaux employés</a></li> <li class="m-3"><a href="http://localhost:8011/en/recrutement/section-employes">Section employés</a></li> <li class="m-3"><a href="http://localhost:8011/en/recrutement/benevolat">Bénévolat</a></li> <li class="m-3"><a href="http://localhost:8011/en/recrutement/suivez-nous">Suivez-nous</a></li> </ul> </div> </footer> 可以存储十进制值。

答案 3 :(得分:-1)

如果整数值将在float可以存储的最大整数值的范围内,则float的Int永远不会是有损转换,因为value总是像<intvalue>.0那样被存储/转换为4存储为4.0。但是,如果从float转换为int,您的分数值将丢失,因此JVM会给您此类错误。如果您冒这样的风险,则必须将float值显式转换为int。