JavaC计算机 如何避免浮点小数计算误差 从小的小数加起。 比如说,有一百个双精度浮点数,大小分别为1.00,0.99,……,0.02,0.01。 如果将它们从大加到小,结果是`50.49999999999995`。 但如果将它们从小加到大,结果则是`50.50000000000003`。 之所以会导致这个原因,是因为计算机计算浮点的机制,会在将一个小数加到一个既存大数上时造成严重误差(比如`100000000.0 + 0.000000001 = 100000000.0`)。 还有一个解决方法就是使用编译器或开发包所提供的更高精度浮点数,比如C++的`long double`、Java的`java.math.BigDecimal`,以及第三方库(比如[GMP大数运算库](https://gmplib.org/ "GMP大数运算库"))。 来源:Y. Daniel Liang,*Introduction to Java Programming and Data Structures, Comprehensive Version*,第11版。 阅读全文 2019-12-30 miyuri 0 条评论
Java JavaFX学习笔记(持续更新) #### 0.基本架构 一般来讲,JavaFX图形界面可从底至顶分为三个层次: 1. **舞台**(Stage,对应类为`javafx.stage.Stage`) 一个舞台可视为一个窗口。可以通过舞台类的`setTitle`方法定义窗口标题。 1. **场景**(Scene,对应类为`javafx.scene.Scene`) 一个舞台仅包含一个场景。场景的大小可被定义(注意,决定窗口大小的是场景,而非舞台)。 场景负责承载所有的可视化内容——节点。如何承载?通过一棵被称为**场景图**(Scene Graph)的树承载。是树必有根,因此只需要使用场景图的根节点就可以初始化一个场景。 1. **节点**(Node,对应类那可就多了去了) 节点就是JavaFX图形程序上的那一个个组件了。如上文所述,节点被编排成一棵树。 下图直观地描述了上述的三个层次。顺便一提,码代码的时候,一般遵循自顶向下、自叶向根的原则。  阅读全文 2019-11-15 miyuri 0 条评论