gpt4 book ai didi

java - 用于二进制十进制转换的两部分代码未给出分数二进制数的所需输出

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:00 25 4
gpt4 key购买 nike

输入“ 111”根据需要给出7.0,但是“ 111.111”也给出“ 7.0”。小数部分怎么了?在这里,“ len”是指字符串的长度。 IDE不会引发任何警告或错误。逻辑有何缺陷?

附录:我知道parseint方法也可以正常工作。但是只是想写我自己的函数:
编辑:用一个小的错字复制了它。

驱动程序:

public static void main(String args[]){
bClass instantiate = new bClass();String b="";
Scanner In = new Scanner(System.in);
System.out.println("Enter binary value");
b = In.nextLine();
System.out.println(instantiate.BinaryToDecimal(b,b.length()));
System.out.println("Thank You");
}


功能:

 double BinaryToDecimal(String bin,int len){
String temp = bin; String fpart=""; String intpart=""; String Binary="";
double BinaryI = 0; double BinaryF=0;
int p= 0; char[] binary = bin.toCharArray();
for(p=0;p<len;p++){
if(binary[p]=='.'){
break;
}
}
int base=1;
for(int i = p-1;i>=0;i--){
BinaryI+=(binary[i]-'0') * base;
base*=2;
}
base=2;
for(int i=p+1;i<len;i++){
BinaryF+=(binary[i]-'0') / base;
base*= 2;
}
}

最佳答案

https://www.geeksforgeeks.org/convert-binary-fraction-decimal/


首先,整数部分必须乘以2的幂。
其次,浮点数必须除以2的幂。


请参考上面的链接以获得清晰的说明。

在上面的函数中,除法是通过整数变量完成的,该整数变量将截断结果。所以我已经替换为float变量。

static double BinaryToDecimal(String bin,int len){
String temp = bin; String fpart=""; String intpart=""; String Binary="";
double BinaryI = 0; double BinaryF=0;
int p= 0; char[] binary = bin.toCharArray();
for(p=0;p<len;p++){
if(binary[p]=='.'){
break;
}
}
int base=1;
for(int i = p-1;i>=0;i--){
BinaryI+=(binary[i]-'0') * base;
base*=2;
}

float fbase=2;
for(int i=p+1;i<len;i++){
BinaryF+=(binary[i]-'0') / fbase;
fbase*= 2;
}
return (BinaryI+BinaryF);
}


How to get the full fraction value of a division result in java?

谢谢。

关于java - 用于二进制十进制转换的两部分代码未给出分数二进制数的所需输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53148909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com