1、度转度分秒算法
小数点后数字乘以60,再将得到的数的小数点后数字乘以60
例如:103.55685565
103.55685565 - 103 = 0.55685565
0.55685565 60 = 33.411339
0.411339 60 = 24.68034
结果为103度33份24.68034秒
2、度分秒转度算法
以度转度分秒方式反算
例如:103度33份24.68034秒
24.68034 / 60 = 0.411339
33.411339 / 60 = 0.55685565
103 + 0.55685565 = 103.55685565
有了转换公式就可以做一个转换工具,java实现:
package convertBLH;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
class frame1 extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
//输入输出框
private JTextField textField1 = new JTextField(8);
private JTextField textField2 = new JTextField(3);
private JTextField textField3 = new JTextField(3);
private JTextField textField4 = new JTextField(5);
private JTextField textField5 = new JTextField(8);
private JTextField textField6 = new JTextField(3);
private JTextField textField7 = new JTextField(3);
private JTextField textField8 = new JTextField(5);
private JLabel label1 = new JLabel("度——————>度分秒");
private JLabel label2 = new JLabel("度分秒——————>度");
private JButton button1 = new JButton("转换");
private JButton button2 = new JButton("转换");
public frame1(){
//设置窗体大小、位置
JFrame frame = new JFrame("度分秒转换工具");
frame.setSize(600,300);
frame.setLocationRelativeTo(null);
//定义面板容器
JPanel contentpanel = new JPanel();
contentpanel.setBorder(new EmptyBorder(5,5,5,5));
frame.add(contentpanel);
contentpanel.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0,0,580,380);
contentpanel.add(panel);
panel.setLayout(null);
//度转度分秒
//设置标签
label1.setBounds(220,10,200,28);
panel.add(label1);
//设置输入文本框
textField1.setBounds(50,50,80,28);
panel.add(textField1);
//设置输出文本框
textField2.setBounds(270,50,50,28);
panel.add(textField2);
textField3.setBounds(340,50,50,28);
panel.add(textField3);
textField4.setBounds(410,50,100,28);
panel.add(textField4);
//设置按钮
button1.setBounds(150,50,100,28);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//计算textfield2需要显示的数字
Double iDouble = Double.parseDouble(textField1.getText());
int i = iDouble.intValue();
String string = String.valueOf(i);
textField2.setText(string);
//计算textfield3需要显示的数字
double j1 = iDouble - i;
Double j2 = j1 * 60;
int j3 = j2.intValue();
textField3.setText(String.valueOf(j3));
//计算textField4
double k1 = j2 - j3;
Double k2 = k1 * 60;
textField4.setText(String.valueOf(k2));
}
});
panel.add(button1);
//度分秒转度
label2.setBounds(220,90,200,28);
panel.add(label2);
textField5.setBounds(50,130,50,28);
panel.add(textField5);
textField6.setBounds(120,130,50,28);
textField7.setBounds(190,130,100,28);
textField8.setBounds(430,130,80,28);
panel.add(textField6);
panel.add(textField7);
panel.add(textField8);
button2.setBounds(310,130,100,28);
panel.add(button2);
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Double iDouble = Double.parseDouble(textField7.getText());
iDouble = iDouble / 60;
iDouble = Double.parseDouble(textField6.getText()) + iDouble;
iDouble = iDouble / 60;
iDouble = iDouble + Double.parseDouble(textField5.getText());
textField8.setText(iDouble.toString());
}
});
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class ConvertBLH {
public static void main(String[] args) {
new frame1();
}
}
运行效果:
另外,笔者做了一个批量转换工具,可读取坐标txt文件并自动识别度分秒转换方式,实现度与度分秒格式批量转换。
转换结果:
下载地址:链接:https://pan.baidu.com/s/1zwnjKlhtBoG2zuYQlIDeQw 提取码:o32b