- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在做以下练习:Sexagesimal degree 。我们想要转换十进制输入,例如
lat: 48.858222
lon: 2.2945
六十进制结果为:
48° 51′ 30″ N, 2° 17′ 40″ E
我们编写了以下代码:
import java.util.*;
public class SexagesimalDegree {
/**
* Convert WGS84-Coordinates from decimal degrees in sexagesimal degrees
*
* @param lat Latitute as Double
* @param lon Longtitute as Double
* @return String "%d° %d′ %d″ %s, %d° %d′ %d″ %s" (lat_degree, lat_minute, lat_second, lat_direction,
* lon_degree, lon_minute, lon_second, lon_direction)
* @throws Exception
*/
public static String convert /*🌐🌐🌐*/ (double lat, double lon) throws Exception {
System.out.println("lat: "+lat);
System.out.println("lon: "+lon);
String[] latSplitted = String.valueOf(lat).split("\\.");
String[] lonSplitted = String.valueOf(lon).split("\\.");
System.out.println("latSplitted: "+Arrays.toString(latSplitted));
System.out.println("lonSplitted: "+Arrays.toString(lonSplitted));
String latHours = latSplitted[0];
String lonHours = lonSplitted[0];
System.out.println("latHours: "+latHours);
System.out.println("lonHours: "+lonHours);
double latMinutesNumber = Double.parseDouble(latSplitted[1])*60;
double lonMinutesNumber = Double.parseDouble(lonSplitted[1])*60;
System.out.println("latMinutesNumber: "+latMinutesNumber);
System.out.println("lonMinutesNumber: "+lonMinutesNumber);
String latMinutes = String.valueOf((int)(latMinutesNumber)).substring(0,2);
String lonMinutes = String.valueOf((int)(lonMinutesNumber)).substring(0,2);
System.out.println("latMinutes: "+latMinutes);
System.out.println("lonMinutes: "+lonMinutes);
String latDecimalPart = "0"+String.valueOf(latMinutesNumber).substring(String.valueOf(latMinutesNumber).indexOf("."));
String lonDecimalPart = "0"+String.valueOf(lonMinutesNumber).substring(String.valueOf(lonMinutesNumber).indexOf("."));
System.out.println("latDecimalPart: "+latDecimalPart);
System.out.println("lonDecimalPart: "+lonDecimalPart);
System.out.println("Double.parseDouble(latDecimalPart): "+Double.parseDouble(latDecimalPart));
double remainingLatSeconds = Integer.parseInt(latMinutes)-Double.parseDouble(latDecimalPart);
System.out.println("remainingLatSeconds: "+remainingLatSeconds);
return "";
}
}
输出以下结果:
lat: 48.858222
lon: 2.2945
latSplitted: [48, 858222]
lonSplitted: [2, 2945]
latHours: 48
lonHours: 2
latMinutesNumber: 5.149332E7
lonMinutesNumber: 176700.0
latMinutes: 51
lonMinutes: 17
latDecimalPart: 0.149332E7
lonDecimalPart: 0.0
Double.parseDouble(latDecimalPart): 1493320.0
remainingLatSeconds: -1493269.0
正如您所注意到的,我们能够按预期获得小时和分钟。然而,当我们努力争取秒数时,谜题就出现了。我们需要从纬度获取小数部分:0.1493327E7,从分钟获取小数部分:0.6700。
但是,我们得到的纬度为 0.149332E7,经度为 0.0。疑问是:如何得到剩下的小数,并计算秒数?
为了能够调试它,我们已阅读:
https://www.thoughtco.com/decimal-degrees-conversion-1434592
https://stackoverflow.com/questions/36474338/converting-string-to-double-with-dotç
https://stackoverflow.com/questions/5769669/convert-string-to-double-in-java
https://stackoverflow.com/questions/27480633/converting-from-string-to-double?noredirect=1&lq=1
总而言之,我们如何在计算分钟后计算剩余的小数,从而能够得到秒?
最佳答案
首先将度数转换为整数秒,而不是处理字符串。
double latDegrees = 48.858222;
int latSeconds = (int) Math.round(latDegrees * 60 * 60); // = 175890
现在您可以使用简单的整数算术来梳理出各个部分。
int seconds = latSeconds % 60; // = 30
int minutes = (latSeconds / 60) % 60; // = 51
int degrees = (latSeconds / 60) / 60; // = 48
这是一种替代方法,如果您不熟悉模运算符 %
,它可能更容易理解:
double latDegreesWithFraction = 48.858222;
int degrees = (int) latDegreesWithFraction; // = 48
double fractionalDegrees = latDegrees - degrees; // = .858222
double minutesWithFraction = 60 * fractionalDegrees; // = 51.49332
int minutes = (int) minutesWithFraction; // = 51
double fractionalMinutes = minutesWithFraction - minutes; // = .49332
double secondsWithFraction = 60 * fractionalMinutes; // = 29.6
int seconds = (int) Math.round(secondsWithFraction); // = 30
关于java - 从十进制度转换为六十进制度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61276512/
需要帮助将这些给定的数字打印成星号,但我是编程新手;我该怎么做? #include int main(void) { int a[5]={20,1,5,15,12}; int i=0
使用 Delphi XE 2 我试图确定缩放方向以将缩放效果应用于图像(TImage),但没有找到执行此操作的函数,并且图像的 OnGesture 事件中的 EventInfo 属性没有此信息. 我见
我不知道制服在内存中是如何表示的。 制服似乎会占用宝贵的寄存器空间,但它们最终会传入/通过/传出到全局内存中,对吗? 制服不用时情况会发生变化吗?编译器可以将它们优化掉吗?--在这种情况下,我已经将无
我正在尝试在名为“timeclock”的模型上记录“time_in”和“time_out”记录。这是我想做但无法开始工作的事情! 检查最后一个时钟条目,看看它是否同时填充了“time_in”和“tim
我想听听您如何解决这种编程任务!?每种类型(OPER = 1 类型)对应一种特定的信息。 这只是大约 10 个具有相同结构的规范之一。首选创建这些“转换器”(协议(protocol))的通用方法。 最
我正在使用 Rest API(NodeJS、Express)和 PostgreSQL 制作 React-Native 应用。 在我的本地机器上托管时一切正常。当 API 托管在我的机器上并且 Post
我是一名优秀的程序员,十分优秀!