四个问题-计算器应用程序-Android Java

问题描述

|| 嘿,我是一个开发android应用程序的新手,我读过“ Sams 24小时自学Java”,这是一本很棒的书。但是我被困在只有十进制数字的值editTexts并使用java数学计算出最终值的地方。 有没有办法让editText输入直接到float或double变量,而不是字符串,然后再从字符串变为double? 在字符串与double或float之间进行转换是否存在任何实际问题,或者值将保持不变并且不会被污染。 使用浮点数而不是浮点数的优缺点。 从用户输入分数的最佳方法? 谢谢你的帮助。祝你有美好的一天。     

解决方法

可以。您可以编写自己的子类,使事情看起来好像正在发生,但是在链中的某个位置,您必须将字符/文本数据转换为数字数据。 是。基本浮点类型使用IEEE-754将二进制数字编码为十进制数。编码提供了很好的精度,但是它不是精确的/不能精确地表示许多可能的数字。因此,如果您从字符串解析为原始浮点类型,然后再次返回字符串,则可能会得到与输入字符串不同的内容。 一个double使用两倍于浮点数的位数对数字进行编码,因此能够保持更高的精度。但是,它不会消除#2中讨论的问题。如果要消除这些问题,请考虑使用诸如“ 0”之类的数字表示您的数字,而不要使用诸如“ 1”或“ 2”之类的原始类型。 以字符串的形式读取整个内容,在\'/ \'字符上加3,然后将每个部分存储为整数(或4)。如果需要将其显示为小数,请使用
BigDecimal
进行除法。     ,不,你不能。 是。如果您的字符串是一个ID,并且读为\“ 0029482 \”,则将其转换为整数后将显示为\“ 29482 \”,并且可能无效。字符串的长度可以大于双精度或浮点型,并且如果字符串中的值类似于\“ 0.12345678901234567890123456789 \”,则将其转换为双精度会损失很多精度。 双精度使用两倍的位数(因此称为名称),因此可以保持更高的精度。 接受分母和分子整数,并将其存储在自定义类中。     ,我想补充一下,如果您正在寻找
double
float
的替代方案,而这种替代方案在字符串和数字形式之间进行转换时不会造成精度损失,请查看以下内容: 标准的“ 8”类表示任意精度的小数位数;即任意精度整数乘以(定标)10的固定整数幂。 Apache
dfp
软件包包含基于十进制的浮点数的实现。 但是,我暂时避开这两个主题,并使用
float
double
进行实现。 (我认为您的真正目的是学习如何编写Java,而不是构建世界上最大的计算器应用程序。)