Tag: 数学

用于具有最小刻度的图表的漂亮标签算法

我需要手动计算图表的Tick标记和Tickrange。 我知道好滴答的“标准”算法(请参阅http://books.google.de/books?id=fvA7zLEFWZgC&pg=PA61&lpg=PA61&redir_esc=y#v=onepage&q&f=false ),我也知道这个Java实现 。 问题是,用这个算法,蜱是“太聪明”了。 这意味着,算法决定应该显示多少刻度。 我的要求是,总有5个蜱虫,但这些当然应该是“漂亮”的。 天真的做法是获得最大值,用5除以乘以ticknumber。 这里的值是 – 当然 – 不是最优的,蜱很丑。 有没有人知道这个问题的解决方案或有一个正式的算法描述提示?

在Kotlin或Java中,如何判断一个数是否是10的幂数?

我有一个数字(64位整数),并想知道它是否是一个纯粹的权力10.也就是说,一个1接0或更多的零。 有没有一种有效的方式来做到这一点, 而不是把它变成一个字符串? 目前我正在这样做: 科特林 fun isPowerOf10(n: Long): Boolean { val logN = Math.log10(myInt.toDouble()) return logN != Math.floor(logN) } Java的 static boolean isPowerOf10(long n) { double logN = Math.log10((double) myInt); return logN != Math.floor(logN); } 但isPowerOf10(999_999_999_999_999_999) (和负版本)失败,由于转换为double时的精度损失,并取log10 ,其精确地输出18.0 。

Kotlin,通用添加

是否可以实现一个通用的,比如说,像下面这样: public abstract interface NumberEx { abstract fun plus(other: NumberEx): NumberEx } abstract interface Vec2t<T : NumberEx> { open var x: T open var y: T fun add(res: Vec2t<T>, a: Vec2t<T>, bX: T, bY: T): Vec2t<T> { res.x = ax + bX res.y = ay + bY return res } } 因为这里编译器抱怨ax + bX和ay + […]